これでエラーが発生する理由に答えることができるリソースが見つかりません:
oncomplete="#{MyBacking.oError ? #{rich:component('oErrorPanel')}.show() : return false;}"
リッチフェイスでa4j:commandButton
。oError は、isOError という Bean のメソッドを参照しています。
エラーが発生します
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
org.apache.el.parser.ParseException: Encountered " "?" "? "" at line 1, column 30.
Was expecting one of:
"}" ...
"." ...
...
「メソッドが true を返す場合、モーダル パネル A を表示し、それ以外の場合は false」と言いたいです。どんな助けでも大歓迎です。
EDIT 次のようにコードを編集しました。
<a4j:region id="Cont">
<a4j:form name="Form">
<h:panelGrid columns="2" style="padding: 2px;">
<h:outputText value="Old password " />
<h:inputSecret id="FormOldP" value="#{MyBacking.dbOldPwd}" />
<h:outputText value="New password " />
<h:inputSecret id="FormNewP0" value="#{MyBacking.dbNewPwd0}" />
<h:outputText value="Re-enter new password " />
<h:inputSecret id="FormNewP1" value="#{MyBacking.dbNewPwd1}" />
<h:panelGroup>
<a4j:commandButton value="Submit"
action="#{MyBacking.dbPwdChange}"
data="#{MyBacking.oldDbPwdError}"
oncomplete="if(data == true) { rich:component('OldErrorPanel').show(); }"
image="/img/btnSubmit16.png"
reRender="sysMsg,FormCont" />
<a4j:commandButton value="Cancel"
onclick="#{rich:component('MyPanel')}.hide();return false;" />
</h:panelGroup>
</h:panelGrid>
</a4j:form>
</a4j:region>
これは正常にコンパイルされますが、ブール値が true に設定されていても (古い passwd が保存されているものと異なる場合)、パネル MyPanel は画面に残りますが、エラーモーダル OldErrorPanel は表示されません。上記は私には大丈夫に見えます。これはJavaです:
public void setOldDbPwdError(boolean b) {
logger.info("setting ldDbPwdErro to "+b);
oldDbPwdError = b;
}
public boolean isOldDbPwdError() {
logger.info("asking for isOldDbPwdError, returning" +oldDbPwdError);
return oldDbPwdError;
}
さらにアドバイスをいただければ幸いです。