2013-01-17 3 views
0

<p:inputText>이 추가 된 경우 actionactionlistener<p:commandButton> 인 경우 호출되지 않습니다.inputText가 추가 될 때 action 및 actionlistener가 호출되지 않음

여기 내보기입니다 : 내가보기에서 다음 "UUU"가 인쇄되는 <p:inputText>를 제거하고 clearRespuesta()에서 브레이크 포인트가 호출되면

private String mrString; 

public String getMrString() { 
    return mrString; 
} 

public void setMrString(String mrString) { 
    this.mrString = mrString; 
} 

public String clearRespuesta() { 
    setRespuesta(new RespuestaOficio()); 
    return null; 
} 

public void listener (ActionEvent event) { 
    System.out.println("uuu"); 
} 

:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core"  
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <h:body>  
     <h:form>  
      <h:outputText value="Respuesta" /> 
       <p:inputText     
        required="true" 
        value=" #{respuestaOficioBean.mrString}"/> 
       <p:commandButton   
        action="#{respuestaOficioBean.clearRespuesta}" 
        actionListener= "#{respuestaOficioBean.listener}" 
        update="growl" 
        value="s ss ssssssss ss ssszzs #{respuestaOficioBean.respuesta}"/>    
      <p:growl id="growl" showDetail="false" sticky="true" /> 
     </h:form> 
    </h:body> 
</html> 

여기 내 콩입니다. 그러나 내가 <p:inputText>을 떠날 경우, 이전은 발생하지 않습니다.

어떻게 이것이 발생하며 어떻게 해결할 수 있습니까?

+0

제목에서 덜 암시적으로 표시하십시오. 그냥 똑똑한 방식으로 질문하십시오. – BalusC

답변

1

나는 즉시 문제의 원인을 보지 못했다, 그래서 난 내 환경에 코드를 copypasted (FullAjaxExceptionHandler 구성한 OmniFaces이있는) 그리고 난 다음 오히려 자기 설명 스택 추적에 오류 페이지를 가지고 :

javax.el.PropertyNotWritableException: /index.xhtml @30,44 value=" #{respuestaOficioBean.mrString}": Illegal Syntax for Set Operation 
    at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:136) 
    at javax.faces.component.UIInput.updateModel(UIInput.java:818) 
    at javax.faces.component.UIInput.processUpdates(UIInput.java:735) 
    at javax.faces.component.UIForm.processUpdates(UIForm.java:281) 
    at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242) 
    at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242) 
    at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1232) 
    at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 

이것은 서버 로그에서도 볼 수 있습니다.

<p:inputText>value 특성에있는 매달 기 앞 공간이 문제의 원인입니다. 이것은 setter 메소드 호출에 대한 유효하지 않은 구문입니다.

을 제거 : 미래에서

<p:inputText     
    required="true" 
    value="#{respuestaOficioBean.mrString}"/> 

을 서버 로그와 (당신은 웹 브라우저의 개발자 도구 세트의 HTTP 트래픽을 모니터에서 볼 수) 아약스 요청의 응답 본문에 좀 더 많은 관심을 지불 . 오류 정보가 거기에 표시되었습니다.

관련 문제