我有以下JSF复合组件:
<composite:interface componentType="myComp">
<composite:attribute name="input" type="java.lang.Integer" />
<composite:attribute name="output" type="java.lang.Integer" />
<composite:attribute name="action" method-signature="java.lang.String action()"/>
</composite:interface>
<composite:implementation>
<h:inputText id="input" value="#{cc.attrs.input}" />
</composite:implementation>假设组合被调用为
<h:form id="form">
<cc:myComposite id="cc" input="#{bean.input}"
output="#{bean.output}" action="#{bean.action}" />
</h:form>一旦调用bean.action,它就会在bean.output中设置一个值。我需要在我的javascript中访问这个值,如下所示
document.getElementById('form:cc:output').value在myComp中,我可以用
getAttributes().put("output", output); 但是数据驻留在后台bean中。有什么想法吗?
发布于 2014-09-12 22:52:45
您需要一个组件来向后台bean提交“输出”值。使用inputHidden实现这一点:
<composite:interface componentType="myComp">
<composite:attribute name="input" type="java.lang.Integer" />
<composite:attribute name="output" type="java.lang.Integer" />
<composite:attribute name="action" method-signature="java.lang.String action()"/>
</composite:interface>
<composite:implementation>
<h:inputText id="input" value="#{cc.attrs.input}" />
<h:inputHidden id="output" value="#{cc.attrs.output}" />
</composite:implementation>然后,您将能够通过javascript使用其隐藏的输入元素来设置“output”值。
https://stackoverflow.com/questions/25816719
复制相似问题