JSF 中的输出和命令 Link

Output and Command Link in one in JSF

是否可以在同一命令中同时使用结果和操作link?

我试过了

    <h:commandLink  outcome="page?faces-redirect=true" 
value="Got to Page" 
action="#{Bean.setValue("...")}" />

但它忽略了结果。

我有一个 table 数据如下: ID 名称 其他 Link 到下一页

所以我想给下一页提供ID,以显示属于之前所选ID的数据...我怎么能实现这一点?

你可以使用 <f:setPropertyActionListener>.

<h:commandLink value="Edit" action="edit?faces-redirect=true">
    <f:setPropertyActionListener target="#{bean.id}" value="#{id}" />
</h:commandLink>

或者您可以滥用 actionListener

<h:commandLink value="Edit" action="edit?faces-redirect=true" 
    actionListener="#{bean.setId(id)}" />

然而,这两种方式都需要一个会话范围的 bean 来记住所选择的 id,这很尴尬。当您在不同的浏览器选项卡中多次打开此类 link,然后在每个选项卡上进行交互时,该网站的行为将非常不直观且令人困惑。

规范的方法是将其作为 GET 参数传递。

<h:link value="Edit" outcome="edit">
    <f:param name="id" value="#{id}" />
</h:link>

目标页面可以通过 <f:viewParam> 获取它,并在必要时通过 <f:viewAction> 在其上调用业务操作。

另请参阅:

  • Creating master-detail pages for entities, how to link them and which bean scope to choose