Formular abschicken nicht auf die Bohne
-
25-09-2019 - |
Frage
Das Formular nicht auf die Bohne.
login.xhtml
<h:form>
<p:panel header="Login">
<p:messages id="msgs" showDetail="true"/>
<h:panelGrid columns="2" columnClasses="column" cellpadding="5">
<h:outputLabel for="user" value="Username" />
<h:inputText id="user" value="#{login.username}" />
<h:outputLabel for="pw" value="Passwort" />
<h:inputSecret id="pw" redisplay="false" value="#{login.password}" />
</h:panelGrid>
<p:button value="Anmelden" action="#{login.login}" type="submit" />
</p:panel>
</h:form>
Login.java
@ManagedBean
@ViewScoped
public class Login {
private FacesContext fCtx;
private String username;
private String password;
public Login() {
fCtx = FacesContext.getCurrentInstance();
}
public String login(){
HttpSession session = (HttpSession) fCtx.getExternalContext().getSession(false);
String sessionId = session.getId();
fCtx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Info: ", getUsername()+", "+getPassword()+", "+sessionId));
return "login.xhtml";
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
}
Es gibt auch keine Ausnahmen in den Protokollen. Was ist das Problem und wie kann ich es beheben?
Lösung
Die <p:button>
einreichen nicht das übergeordnete Formular, es ist nur ein Haken der Lage sein, einige JS-Code auf Knopfdruck ausführen, ohne die Absicht, jede POST Formular abzuschicken. Ersetzen Sie sie durch <p:commandButton>
. Außerdem würde Sie gerne update="msgs"
hinzufügen, um die Komponente mit id="msgs"
zu aktualisieren, nachdem vor.
kein Zusammenhang mit dem konkreten Problem, Sie wollen nicht getSession(false)
zu verwenden, da es null
zurückkehren. Nur Verwendung getSession(true)
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow