1

JSF コード:

<rich:popupPanel modal="true" id="editPanelUser">
  <h:form>
    <h:panelGrid columns="2">
      <h:outputLabel value="first name (*)" />
      <h:inputText value="#{usersBean.currentItem.firstName}" />
    </h:panelGrid>
    <h:panelGrid>
      <a4j:commandButton value="save"
        oncomplete="if(#{facesContext.maximumSeverity==null}) #{rich:component('editPanelUser')}.hide()"
        action="#{usersBean.runAction('saveUser')}"/>
    </h:panelGrid>
  </h:form>
</rich:popupPanel>

バッキング Bean コード:

public void setRunAction(String action){
    if("saveUser".equals(action)){
        ...
    }
}

setRunAction メソッドにブレークポイントを設定しましたが、ここに到達することはありません。アイデア?

奇妙なのは、このポップアップを開く a4j:commandLink コードが正常に動作し、runAction メソッドを呼び出すことです。

<h:form>
  <rich:dataTable value="#{usersBean.dataList}" var="singleUser"
    rowClasses="row1,row2" rowKeyVar="row" id="singleUserTable"
    ajaxKeys="#{usersBean.keys}">
    <rich:column>
      <a4j:commandLink id="editlink"
        oncomplete="#{rich:component('editPanelUser')}.show();return false;">
        <f:setPropertyActionListener value="editUser"
          target="#{usersBean.runAction}" />
      </a4j:commandLink>
    </rich:column>
  </rich:dataTable>
</h:form>
4

2 に答える 2

0

以下のようにアクション属性を変更します

action="#{usersBean.setRunAction('saveUser')}"

またはあなたの方法を次のように変更してください

public void runAction(String action){}
于 2012-03-29T13:06:47.873 に答える