0

基本的に、私はレコードのリストを持っています。各レコード (VO Bean) には、アラート フラグ がalertFlag関連付けられます。alertFlag が true の場合、アラート ボックスが表示されます。そうしないと、プロンプトが表示されません。

VO Bean:

@ManagedBean(name = "theVo")
@SessionScoped
public class TheVO {
   private boolean alertFlag;

   /** getter and setter **/
}

XHTML コードは次のとおりです。

<t:dataTable var="theRecord" value="#{theVo.theList}">

  <t:column>
    <h:commandLink value="#{theRecord.recNo}" 
      actionListener="#{theEnquiry.doSetAlertFlag(theRecord.paramKey)}" 
      immediate="true" 
      action="#{theDetail.doShowDetailsPage(theRecord)}" 
      onclick="readAlertFlag(#{theEnquiry.alertFlag})"/>
    </h:commandLink>
  </t:column>

  ...
  ...
</t:dataTable>

ここにtheEnquiry豆があります:

@ManagedBean(name = "theEnquiry")
@SessionScoped
public class Enquiry {

   private boolean alertFlag = false;

   /** getter and setter of alertFlag **/

   public void doSetAlertFlag(Integer theParamKey) {

      // check whether the alert flag is true or false.
      // if alert flag is true, otherwise set it false
   }
}

JavaScript コードは次のとおりです。

function readAlertFlag(alertFlag) {

  if( alertFlag == "true" )
    alert('alertFlag is true');
  else
    alert('alertFlag is false');
}

私の現在の状況は、JavaScript アラート ボックスが常に最初 doSetAlertFlag()に実行され、その後実行されるだけです。しかし、doSetAlertFlag()プロンプトを表示する前にチェックを最初に実行したいので、最初に実行することを期待しています。これが JavaScript プロンプトで実行できない場合は、別の解決策を検討します。

4

1 に答える 1

0

JSF にスクリプトを条件付きでレンダリングさせます。をに置き換えonclickます<h:outputScript rendered>

<h:commandLink ... />
<h:outputScript rendered="#{theEnquiry.alertFlag}">showAlert()</h:outputScript>
于 2012-10-25T11:29:21.760 に答える