2017-07-13 5 views
1

Ich habe eine JSF-Seite und habe eine ManagedBean damit verknüpft.Keine Anforderungsparameter in @RequestScoped. ManagedBean

Meine xhtml Seite sieht wie folgt aus:

<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 ist die zugehörige Managedbean die ein @RequestScoped ManagedBean ist.

Verfahren sendEmailForErrorPage() in EmailManagebean wie folgt aussieht:

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

ich den Ausnahmewert als "aaa" erhalten müssen, die ich in xhtml Seite gab. Aber ich bekomme jetzt null als Wert.

Ich versuchte

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

noch das Ergebnis null war verwenden.

Kann mir jemand helfen, dieses Problem zu lösen.

+0

Sollten Sie das h: -Formular nicht in f: view platzieren, um den Komponentenbaum korrekt zu erstellen? – OTM

Antwort

0

Ich habe einen Ausweg gefunden, um dieses Problem zu beheben. Anstatt es als Parameter zu übergeben, habe ich es als Argument für die Methode übergeben. Es hat gut funktioniert. Ich konnte den Wert für die Ausnahme abrufen.

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