jsf - Hide h:outputText element if there was no user input -


<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> 

the bean

@managedbean @viewscoped public class debug implements serializable {      private string expression; //getter & setter present 

when enter value shows after submit in h:outputtext element. if enter empty value (which wrong) in h:outputtext element still present previous value.

how can hide 'h:outputtext' when no values submitted?

so see 2 issues above code.

  1. your not updating h:outputtext on commandbutton click. need add id h:outputtext , add update command button

    <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. the required ="true" on inputtext not allowing empty value submitted server. h:outputtext never empty, therfore value rendered. fix this, validation on server.

    jsf

    remove required="true" tag

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

    java

    public void myaction(){      //check make sure inputtext isnt null/blank first     if(stringutils.isblank(expression))         facescontext.getcurrentinstance().addmessage(null, new facesmessage("error", "must provide value"));     else{          //business logic     } } 

Comments