执行动作后如何将参数传递给h:commandLink?
How to pass a parameter to h:commandLink after action is executed?
我有一个标记为 "SaveAndView" 的命令链接。一旦我点击这个 link,这基本上是在当前页面 "a.xhtml" 上保存数据,然后生成一个 ID。然后它重定向到页面 "b.xhtml?id=|generatedID|" 以查看数据。如何将生成的 ID 传递给此 commandLink?
<h:commandLink action="#{mybean.save()}"
value="#{msg.saveAndView}"
target="_blank" includeViewParams="true">
<f:param name="id" value="#{mybean.id}"/>
</h:commandLink>
上面的示例代码生成了一个空的 id 参数,因为还没有调用 save()
您似乎误解了 基本工作流程。你的情况如下:
- 用户填写待持久化实体的数据;
- 用户通过单击命令提交表单 link;
- Action方法被执行,其中:
- 通过调用
entityService.persist(entity);
; 持久化新实体
- 一个实体在那个方法执行后分配了一个
id
(即其中执行的事务已经提交);
- 您在操作方法的 return 语句中将此 ID 作为查询参数传递,
return "viewentity?id=" + entity.getId() + "&faces-redirect=true";
以重定向到目标视图(假设您有一个不需要的数字 ID编码,你不需要传递任何其他参数);
- 在目标页面上使用
<f:viewParam name="id" ... />
接收 id
并使用它来显示您想要的数据。
因此,要直接回答您的问题,您需要在操作方法中手动传递生成的 id
。
我有一个标记为 "SaveAndView" 的命令链接。一旦我点击这个 link,这基本上是在当前页面 "a.xhtml" 上保存数据,然后生成一个 ID。然后它重定向到页面 "b.xhtml?id=|generatedID|" 以查看数据。如何将生成的 ID 传递给此 commandLink?
<h:commandLink action="#{mybean.save()}"
value="#{msg.saveAndView}"
target="_blank" includeViewParams="true">
<f:param name="id" value="#{mybean.id}"/>
</h:commandLink>
上面的示例代码生成了一个空的 id 参数,因为还没有调用 save()
您似乎误解了 基本工作流程。你的情况如下:
- 用户填写待持久化实体的数据;
- 用户通过单击命令提交表单 link;
- Action方法被执行,其中:
- 通过调用
entityService.persist(entity);
; 持久化新实体
- 一个实体在那个方法执行后分配了一个
id
(即其中执行的事务已经提交); - 您在操作方法的 return 语句中将此 ID 作为查询参数传递,
return "viewentity?id=" + entity.getId() + "&faces-redirect=true";
以重定向到目标视图(假设您有一个不需要的数字 ID编码,你不需要传递任何其他参数);
- 通过调用
- 在目标页面上使用
<f:viewParam name="id" ... />
接收id
并使用它来显示您想要的数据。
因此,要直接回答您的问题,您需要在操作方法中手动传递生成的 id
。