未在@RequestScoped ManagedBean中获取请求参数

时间:2017-07-13 13:24:57

标签: java jsf jsf-2.2 managed-bean facescontext

我有一个JSF页面并且有一个与之关联的Managedbean。

我的xhtml页面如下所示:

<h:head>

</h:head>

<h:body id="configuratorWrapper">
<h:form method="post" id="form" name ="name" prependId="false">
    <f:view>
        <div class="container">
        <input type="hidden" name="exception" id="exception" value="aaa" /> 
        </div>  
         <h:input type="hidden" name="email" id="email" value="#{emailManagedBean.sendEmailForErrorPage()}" /> 
    </f:view>
</h:form>
<h:outputScript library="resources/bower_components/boostrap-sass/assets/javascripts" name="bootstrap.js"></h:outputScript>
</h:body>

emailManagedBean是关联的Managedbean,它是一个@RequestScoped ManagedBean。

EmailManagebean中的方法sendEmailForErrorPage()如下所示:

public Boolean sendEmailForErrorPage() {
        this.exception = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("exception");
    }

我需要将异常值作为“aaa”,我在xhtml页面中给出了。但是现在我的价值是零。

我尝试使用

<p:commandButton name ='email' action="#{emailManagedBean.sendEmailForErrorPage()}">
    <f:param name="exception" value="aaa" />
</p:commandButton>

结果仍为空。

有人可以帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法。我将其作为参数传递给方法,而不是将其作为参数传递。它工作得很好。我能够获得异常的价值。

<f:event type="preRenderView" listener="#{emailManagedBean.sendEmailForErrorPage('aaa')}" />