在视图中,我可以使用什么来自动将固定值分配给bean属性?我使用以下组件提交表单:
<h:commandLink action="#{myDetailController.create}" ... />
所以一切正常,表单已提交。我想自动将1
的值分配给myDetailController.selected.number
。每次点击链接时,它必须始终为1
。如果不在onClick=""
中使用<h:сommandLink>
,这是否可行?如果没有,您是否可以指定如何在UICommand
组件中触发多个操作?
答案 0 :(得分:3)
其中一种可能性是将<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);