Jsf 如何从h:commandLink向POST请求添加参数?
我有两个JSF页面:A.xhtml和B.xhtml A.xhtml:Jsf 如何从h:commandLink向POST请求添加参数?,jsf,post,jsf-2,parameters,navigation,Jsf,Post,Jsf 2,Parameters,Navigation,我有两个JSF页面:A.xhtml和B.xhtml A.xhtml: <html ...> <h:body> <h:form> <h:commandLink value="To B page" action="#{bean.goToB}"> <f:param name="aURL" value="A.xhtml"/> </h:commandLink> </
<html ...>
<h:body>
<h:form>
<h:commandLink value="To B page" action="#{bean.goToB}">
<f:param name="aURL" value="A.xhtml"/>
</h:commandLink>
</h:form>
</h:body>
</html>
和B.xhtml:
<html ...>
<h:body>
<f:metadata>
<f:viewParam name="aURL"/>
</f:metadata>
<h:link value="To A page" outcome="#{aURL}"/> <----- this link is disabled
</h:body>
</html>
基本上这是因为您没有传递有效的结果,所以首先尝试将一些有效的结果放在没有xhtml扩展名的页面名称中,您将看到它呈现为链接
因此,首先,在h:link
中返回操作方法或结果的页面的名称不能具有xhtml扩展名,因此有一个Page1.xhtml。操作是Page1。删除xhtml扩展
其次,当您在命令链接中使用f:param
时,它将是请求中的一个参数,因此如果您使用faces redirect
重定向到另一个页面,它的值将丢失,因为浏览器将发出新的请求,所以请删除faces redirect
最后,要从f:param
获取发送的值,请使用预定义的beanparam
so:
<h:link value="To A page" outcome="#{param.aURL}"/>
并删除f:metadata
很抱歉,我在JSF页面的名称中犯了这么大的错误(我编写了page.xhtml.xhtml)
我不必在链接的结果中删除xhtml扩展,我不必删除f:metadata
,我也不必使用{param.aURL}
(我可以使用{aURL}
)
感谢大家的帮助(特别是César Loachamin和kolossus)。name=“aURL”
不会将参数绑定到任何东西。它只是命名而已。您需要param.aURL
,它从请求中选择命名参数
<h:link value="To A page" outcome="#{param.aURL}"/>