2016-08-01 33 views
1
<h:form id="aform"> 

    <p:growl id="debug-growl" showDetail="true" sticky="false" /> 

    <p:inputText id="expression" value="#{debug.expression}" required ="true" /> 

    <p:commandButton update="debug-growl" value="Process" action="#{debug.myaction}" /> 

    <h:outputText value="Source regular expression: #{debug.expression}" rendered="#{not empty debug.expression}" /> 

</h:form> 

die Bohneausblenden h: output Element, wenn es keine Benutzereingaben

@ManagedBean 
@ViewScoped 
public class Debug implements Serializable { 

    private String expression; //getter & setter is present 

war, als ich den Wert geben Sie es dann, nachdem sie im h:outputText Element vorlegen zeigt. Aber wenn ich einen leeren Wert (was falsch ist) eingeben, dann in der h:outputText Element immer noch den vorherigen Wert.

Wie kann ich den 'h: outputText' ausblenden, wenn keine Werte eingereicht wurden?

+0

Versuchen Sie @ViewScoped Anmerkung – JokerTheFourth

+0

@JokerTheFourth Ändern: Um was und warum? – Kukeltje

+0

Um etwas auszublenden, können Sie 'Disabled' oder' Rendred' verwenden. In diesem Fall (Rendred) ist es unsichtbar. –

Antwort

2

So sehe ich 2 Probleme mit dem obigen Code.

  1. Sie aktualisieren nicht die h: outputText auf der Befehlsschaltfläche klicken. Sie müssen eine ID an die h hinzuzufügen: output und fügen Sie es als ein Update auf die Befehlsschaltfläche

    <p:commandButton update="debug-growl someText" value="Process" action="#{debug.myaction}" /> 
    
    <h:outputText id = "someText" value="Source regular expression: #{debug.expression}" rendered="#{not empty debug.expression}" /> 
    
  2. Die required = „true“ auf der input nicht den leeren Wert so dass an den Server gesendet werden . Daher wird der h: outputText niemals leer sein, daher wird dieser Wert immer gerendert. Um dies zu beheben, würde ich meine Validierung auf dem Server durchführen.

    JSF

    entfernen die required = "true" Tag

    <p:inputText id="expression" value="#{debug.expression}"/> 
    

    Java

    public void myAction(){ 
    
        //check to make sure inputText isnt null/blank first 
        if(StringUtils.isBlank(expression)) 
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Error", "Must provide value")); 
        else{ 
         //business logic 
        } 
    }