我有以下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中。有什么想法吗?
答案 0 :(得分:0)
您需要一个组件将“输出”值提交给辅助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'值。