其中一种可能性是将 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);