0

在我的视图中,我可以使用什么来将固定值自动分配给 bean 属性?我使用以下组件提交表单:

<h:commandLink action="#{myDetailController.create}" ... />

所以一切正常,表单被提交。我想自动分配 to 的1myDetailController.selected.number1每次点击链接时都必须如此。onClick=""如果不使用in ,这是否可能<h:сommandLink>?如果没有,您能否指定如何在组件中触发多个操作UICommand

4

1 回答 1

3

其中一种可能性是将 a 嵌套<f:setPropertyActionListener>在您的内部<h:commandLink>

<h:commandLink ... >
    <f:setPropertyActionListener value="1" target="#{myDetailController.selected.number}" />
</h:commandLink>

另一种可能性是在您的操作方法中添加一行myDetailController.create

selected.setNumber(1);

否则,您可以<h:commandLink>通过嵌套附加<f:actionListener>标签来指定任意数量的动作侦听器,记住还有一个位置可以actionListener<h:commandLink>.


重新阅读您的问题后,您似乎无法理解您最终想要什么。您需要与固定不同的东西1:您需要将属性设置为1仅在单击相关命令链接的情况下以及0在其他条件下。这样您就可以区分是否已触发相关命令组件。这是以不同的方式完成的:您首先需要检查请求参数映射中是否存在相关命令链接的客户端 ID,然后才决定输入什么值。所以,基本上,可以满足您的要求通过您认为的以下行:

<h:commandLink ... >
    <f:setPropertyActionListener value="#{empty param[component.clientId] ? 0 : 1}" 
                                 target="#{myDetailController.selected.number}" />
</h:commandLink>

或在您的操作方法中:

selected.setNumber(context.getExternalContext().getRequestParameterMap().
                           containsKey("formId:commandLinkId" ? 1 : 0);
于 2013-10-04T10:04:46.253 回答