我在一个循环中创建一个h:表单,我希望每个表单都有一个隐藏的输入,其值来自循环变量。像这样:
<ui:repeat value="#{controller.elements}" var="element">
<h:form>
<h:inputHidden value="#{element.value}"/> <!-- Taken from element.value, but submitted to controller.myvalue -->
<h:commandLink action="#{controller.myaction}"/>
</h:form>
</ui:repeat>
问题是,我如何从一个来源提供输入的值,例如来自#{element.value},但是在提交时,我希望它被设置为#{controller.myvalue}?
显然,value属性指定源和目标。我试着做这样的事情:
<ui:param name="#{controller.myvalue}" value="#{element.value}"/>
<h:inputHidden value="#{controller.myvalue}"/>
哪个不起作用。它必须是一个已知问题,但我找不到解决方案。
感谢您的帮助, 由里。
答案 0 :(得分:2)
使用f:setPropertyActionListener
。
<ui:repeat value="#{controller.elements}" var="element">
<h:form>
<h:commandLink action="#{controller.myaction}">
<f:setPropertyActionListener target="#{controller.value}" value="#{element.value}" />
</h:commandLink>
</h:form>
</ui:repeat>
这将在controller.setValue(element.getValue())
之前controller.myaction()
。{/ p>