JSF 2 senden eines Formulars
Habe ich diese Passenden codes:
<h:inputText id="searchtext" value="#{SearchBean.input}" />
<h:commandButton value="#{msg.BUTTON_SEARCH_LABEL}" title="#{msg.BUTTON_SEARCH_LABEL}"
action="#{SearchBean.Submit}" />
SearchBean hat folgenden Wortlaut:
@ManagedBean(name = "SearchBean")
@RequestScoped
public class SearchBean implements Serializable
{
private String input = null;
private Boolean submitted = false;
public String getInput() {
return input;
}
public boolean getSubmitted() {
return submitted;
}
public void setInput(String input) {
this.input = input;
}
public void setSubmitted(Boolean submitted) {
this.submitted = submitted;
}
public String Submit() {
System.out.println(">>> SUBMITTED <<<");
submitted = true;
return "";
}
}
Den SearchBean die Methode wird aufgerufen, in BookService bean wie folgt:
@Stateless
public class BookService()
{
@Inject
private SearchBean searchBean;
@PostConstruct
public void init()
{
Boolean isSearch = isSubmitted();
if (isSearch) {
//some codes
} else {
//other codes
}
}
public Boolean isSubmitted() {
System.out.println("STATUS: " + searchBean.getSubmitted());
return searchBean.getSubmitted();
}
}
Wenn ich das Formular Absenden, wird der status durch Rückkehr SearchBean ist getSubmitted() Methode immer wieder false. Ich würde erwarten, dass dies wieder wahr wenn das Formular abgeschickt wird. Ich weiß nicht, was zu tun ist.
Ist FlashScoped das einzig brauchbare option, mit der form der Einreichung in JSF 2? Jeder Experte Pflege, Stellung zu nehmen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden @ViewScoped und null in Ihrer submit () - Methode:
Attribute, die innerhalb einer bean im view-Bereichs wird anhalten, bis der Benutzer navigiert zu einer neuen Sicht. Null zurückgeben aus einer bean-Methode wird ein reload der gleichen Ansicht und halten den bean-Zustand.
UPDATE: Ersten Frage zurück: Ist Sie BookService bean genannt, aus derselben Ansicht? Wenn nicht, wird der ViewScope wird nicht funktionieren. Sie haben, um die eingereichten variable im Gültigkeitsbereich einer session statt.
Stellen Sie sicher, dass Ihre submit-Methode aufgerufen wird (Debuggen mit Haltepunkt in der Methode) und stellen Sie sicher, dass Ihre Formular Elemente eingeschlossen sind
<form> ... </form>
.<form>
..</form>
- tags? Aktualisiert meine Antwort.Submit
Methode, so weiß ich, dass die gleichen SearchBean Instanz wurde injiziert in BookService. Würde der @PostConstruct-annotierten Methode 'init()' oben, die ausgeführt werden, bevor die SearchBean injiziert wird?@RequestScoped bedeutet, dass der Kontext zerstört wird, am Ende der servlet-Anfrage.
Versuchen @ViewScoped von @FlashScoped. Für den Unterschied: was ist neu in jsf 2