【发布时间】:2012-10-06 04:04:23
【问题描述】:
我想要做的是实现一个JSF页面,一旦完成就会返回到前一页面。这是@RequestScoped bean。
名为 viewDocument.xhtml 的原始页面有这样的内容:
<f:metadata>
<f:viewParam name="ID" value="#{viewDocument.id}" />
</f:metadata>
(bunch of stuff)
<h:link outcome="editThingy" value="Edit Thingy">
<f:param name="ID" value="#{viewDocument.doc.id}" />
<f:param name="Return" value="viewDocument" />
</h:link>
目标页面 editThingy.xhtml 有自己的支持 bean,如下所示:
<f:metadata>
<f:viewParam name="ID" value="#{editThingy.id}" />
<f:viewParam name="Return" value="#{editThingy.navReturn}" />
</f:metadata>
<h:form>
(bunch of stuff)
<p:commandButton value="Save" action="#{editThingy.save}" >
<f:param name="ID" value="#{editThingy.id}" />
</p:commandButton>
<p:commandButton value="Cancel" action="#{editThingy.navReturn}" >
<f:param name="ID" value="#{editThingy.id}" />
</p:commandButton>
</h:form>
这个想法是两个按钮(取消或保存)都会返回到由 Return 请求参数指示的页面,新页面获取 ID 请求参数,因此它会提取相同的记录EditThingy 工作。
BZZZT! p:commandButton 执行的是 POST 而不是 GET,因此它不能使用 f:param。但是,如果我尝试使用 p:button 则没有属性可以调用支持 bean!
有什么方法可以实现我想要的吗?
【问题讨论】:
-
你试过commandLink吗,它支持f:param或者f:setPropertyActionListener作为commandButton?