2014-12-04 101 views
1

當我嘗試提交表單時,輸入值出現在驗證方法中,但在提交方法中不存在。爲什麼輸入屬性在程序到達提交函數時爲空?提交時JSF表單值消失

輸入:ASDF


genres.xhtml

<h:form> 
    <h:inputText 
     id="userGenre" 
     value="#{genres.input}" 
     validator="#{genres.validateLength}" 
     required="true" size="3" 
     /> 
    <h:commandButton 
     value="Add genre" 
     action="#{genres.submit}" 
     /> 
    <h:message for="userGenre" /> 
</h:form> 


Genres.java

@Named 
@SessionScoped 
public class Genres { 

    static final Logger LOG = LoggerFactory.getLogger(Genres.class); 

    private String input = ""; 

    public void validateLength(FacesContext context, UIComponent toValidate, Object value) { 
     LOG.info("Validating"); 

     input = (String) value; 
     LOG.info("name:"+input); // result: "name:asdf" 

     int min = 3; 
     int max = 15; 
     int len = input.length(); 
     if (len < min || len > max) { 
      ((UIInput) toValidate).setValid(false); 
      FacesMessage message = new FacesMessage("Must be at least 3 and at most 15 characters."); 
      context.addMessage(toValidate.getClientId(context), message); 
      return; 
     } 
    } 

    public void submit() { 
     LOG.info("Submitting"); 
     LOG.info("name:"+input); // result: "name:" 

     // process input 
    } 

    public String getInput() { 
     return input; 
    } 

    public void setInput(String input) { 
     this.input = input; 
    } 

} 


faces-config.xml中

<managed-bean> 
    <managed-bean-name>genres</managed-bean-name> 
    <managed-bean-class>no.krystah.Genres</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
    <managed-property> 
     <property-name>input</property-name> 
     <property-class>java.lang.String</property-class> 
     <value/> 
    </managed-property> 
</managed-bean> 

回答

1

#{genres.submit}當您嘗試提交則JSF將產生你的流派的新實例類,所以輸入是空白的,但如果你使用@ManagedBean類別類別我認爲代碼應該很好

+0

這將是有道理的,因爲無論我初始化「輸入」字段(在此代碼中,我使用「」)將在提交時發送。但是,添加@ManagedBean註釋確實沒有幫助。 – krystah 2014-12-04 00:57:38

+1

我回過頭來。單獨添加ManagedBean不起作用,但是如果我也刪除了@Named,它就起作用了。謝謝。 :) – krystah 2014-12-04 01:05:39

+0

不客氣,很高興看到你的問題已經解決 – jfun 2014-12-04 01:07:45