0

actionとのactionlistenerは、が追加さ<p:commandButton>れたときに呼び出されません。<p:inputText>

これが私の見解です:

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

これが私の豆です:

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");
}

ビューからを削除する<p:inputText>と、「uuu」が出力され、のブレークポイントclearRespuesta()が呼び出されます。ただし、を離れる<p:inputText>と、前者は発生しません。

これはどのように発生し、どうすれば解決できますか?

4

1 に答える 1

1

問題の原因がすぐにはわからなかったので、あなたのコードを私の環境 (OmniFaces がFullAjaxExceptionHandler構成されている) にコピーペーストしたところ、以下の自明なスタックトレースを含むエラー ページが表示されました。

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)

これは、サーバー ログにも表示されていました。

問題の原因はvalue<p:inputText>. これは、セッター メソッド呼び出しの無効な構文です。

それを除く:

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

将来的には、サーバー ログと ajax 要求の応答本文にもう少し注意を払ってください (Web ブラウザーの開発者ツールセットの HTTP トラフィック モニターで確認できます)。そこにエラー情報が表示されました。

于 2013-01-17T23:50:34.730 に答える