基本上我有一份记录清单。每条记录(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
bean:
@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提示符下无法完成此操作,我可以选择其他解决方案。
答案 0 :(得分:0)
让JSF有条件地渲染脚本。将onclick
替换为<h:outputScript rendered>
。
<h:commandLink ... />
<h:outputScript rendered="#{theEnquiry.alertFlag}">showAlert()</h:outputScript>