【问题标题】:Not able to get f:param in f:viewParam of redirected page无法在重定向页面的 f:viewParam 中获取 f:param
【发布时间】:2014-02-04 12:10:29
【问题描述】:

我在 generalPage.xhtml 中有下面的命令按钮,它有 GeneralPageMB 支持 bean。

    <p:commandButton value="#{facility.facilityName}" ajax="false"
                        action="facilityHome.xhtml?faces-redirect=true&amp;includeViewParams=true">
                        <f:param name="fid" value="#{facility.id}" />
    </p:commandButton>

我有第二页 facilityHome.xhtml,其中包含以下代码:

     <div style="width: 400px; height: 250px;" class="loginContainerBg">
                <h:form id="f" prependId="false">
                    <f:metadata>
                        <f:viewParam name="fid" value="#{facilityHomeMB.facilityId}"
                            converter="com.ot.common.utility.FacilityIdConverter" />
                    </f:metadata>
     </div>

facilityHome.xhtml 具有作为 FacilityHomeMB 的支持 bean。所以我试图获取视图参数并设置为 FacilityHomeMB bean 中的 facilityId 属性。我的问题是 facilityId 没有设置。代码有什么问题?任何帮助将不胜感激。

我正在使用 tomcat 7、Primefaces 4.0、Mojarra 2.1。

【问题讨论】:

  • 那是合法的 JSF 吗?我一直认为&lt;f:metadata&gt; 只能附加到一个页面,如vld 中所述。尝试将该标签放在视图顶部。
  • 是的,你是对的,我错误地放置了 ,因为在 vld 中它应该是 的子级,所以我在 中移动了 标签但是它不工作..
  • 你是如何检查 id 没有被设置的?你能把facilityHomeMB和你的转换器的重要部分贴出来吗?

标签: jsf jsf-2 primefaces


【解决方案1】:

&lt;p:commandButton&gt; 不适合这项工作。它的目的是执行一个 POST 请求,从而提交封闭表单的数据。它不适用于页面到页面导航。您的具体问题是因为您之后明确发送重定向,导致带有参数的初始请求丢失。

最好只使用&lt;p:button&gt;。这样你也不再需要一个完整的&lt;h:form&gt;,你也不需要搞乱faces-redirect等。

<p:button value="#{facility.facilityName}" outcome="facilityHome">
    <f:param name="fid" value="#{facility.id}" />
</p:button>

就是这样。

在目标页面中只保留&lt;f:metadata&gt;,但它不应该嵌套在表单中。另见When using <ui:composition> templating, where should I declare the <f:metadata>? 此外,您绝对也不应该使用prependId="false"。这与当前的问题无关,但它会使 JSF ajax 工作变得一团糟(找不到要渲染的组件等)。

另见:

【讨论】:

  • 非常感谢 BaluchC 你是天才。您的 p:button 建议工作完美。我会记住不要使用 prependId="false"。再次感谢。
  • 不客气。如果您熟悉 HTTP 和 HTML 基础知识,JSF 就更容易理解。 JSF 基本上“只是”一个 HTTP 控制器和 HTML 生成器。
猜你喜欢
  • 2011-04-16
  • 2013-10-27
  • 2012-11-09
  • 1970-01-01
  • 2012-07-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多