h:在ui中输入隐藏:重复

时间:2010-10-27 08:57:46

标签: jsf

我在一个循环中创建一个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}"/>

哪个不起作用。它必须是一个已知问题,但我找不到解决方案。

感谢您的帮助, 由里。

1 个答案:

答案 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>