1

動作しないこのコードがあります。私はfieldToStore定義しました。アラートを出すことができ、firebug consoleでその値を確認できますが、myBeanに渡されると、String値の場合は常に未定義になり、ブール値の場合はfalseになります。何か案は?

<a4j:commandButton id="bt1" action="#{myBean.doSomething}" onclick="fieldToStore=false;saveFieldState();">
</a4j:commandButton>        
<a4j:jsFunction name="saveFieldState" action="#{myBean.dummyAction}" />
   <a4j:actionparam name="fieldToStore" assignTo="#{myBean.fieldToStore}" />
</a4j:jsFunction>

私の期待は、bt1をクリックした後、javascript var fieldToStoreのように、myBean.fieldToStoreの値がfalseになることです。

4

2 に答える 2

2

を使用しています<a4j:actionParam>。これは、f:paramとf:actionListenerの組み合わせであり、そのvalue属性をのプロパティに割り当てますassignTo

代わりに使用し<a4j:param>ます。公式ドキュメントでこの例を参照してください

于 2012-07-04T18:10:08.810 に答える
1

私はそれを理解しました...問題は私がイベントonclickでjsFunctionを呼び出す途中にありました:

onclick="fieldToStore=false;saveFieldState();

そのはず:

onclick="fieldToStore=false;saveFieldState(fieldToStore);

richfacesドキュメントの例は誤解を招く可能性があります。

<body onload="callScript()">
  <h:form>
         ...
        <a4j:jsFunction name="callScript" data="#{bean.someProperty1}" reRender="someComponent" oncomplete="myScript(data.subProperty1, data.subProperty2)">
              <a4j:actionparam name="param_name" assignTo="#{bean.someProperty2}"/>
        </a4j:jsFunction>
        ...
  </h:form>
  ...
</body>

Imoそれはonload="callScript(param_name)"でなければなりません。

于 2012-07-05T16:13:37.737 に答える