在 JSF 2.2 页面中检索 JSP post 字段

Retrieve JSP post field inside JSF 2.2 page

我有一个 JSP 页面,其中包含一个带有方法 "post" 的表单,并且在操作中它调用 jsf 2.2 中的页面 xhtml。如何在我的 xhtml 页面中检索从我的 jsp 页面发送的 post 字段。 谢谢

您可以(滥用)使用 <f:viewParam> 来完成此操作。

想象一下这种“普通 HTML”形式(JSP 无关紧要,因为它只是这里的 HTML 代码生成器;它可以是任何服务器端 language/framework/viewtechnology ):

<form action="some.xhtml" method="post">
    <input type="text" name="foo" />
    <input type="text" name="bar" />
    <input type="submit" />
</form>

您可以收集输入并将其设置为 JSF bean 属性并调用 bean 操作,如下所示:

<f:metadata>
    <f:viewParam name="foo" value="#{bean.foo}" />
    <f:viewParam name="bar" value="#{bean.bar}" />
    <f:viewAction action="#{bean.action}" onPostback="true" />
</f:metadata>

请注意 onPostback="true" 的重要性,默认情况下它仅在 GET 上调用。 <f:viewParam> 最初也是,但如果结果为空,它无论如何都会填充模型。

如果您实际上不需要模型(支持 bean)中的那些参数,那么您也可以通过 JSF 页面中的 #{param} 映射立即访问它们:

<p>User submitted data:</p>
<ul>
    <li>Foo: #{param.foo}</li>
    <li>Bar: #{param.bar}</li>
</ul>

从长远来看,更好的办法是将该遗留 JSP 页面转变为真正的 JSF 页面。

另请参阅:

  • What can <f:metadata>, <f:viewParam> and <f:viewAction> be used for?

我认为您的表单 UI 在 JSP 页面中并且您想访问 xhtml 页面中的表单数据。 如果你想访问 xhtml 文件中的参数值:

 In JSP:
   <form action="" method="">
       <input name="myName" type="text">
       <input value="Submit" type="Submit">
   </form>

In XHTML :
   To access 'myName' parameter in xhtml page please use like following

   eg. <h:outputLabel value="#{request.getParameter('myName')}"/>