目的:
当下拉框改动的时候,则前端显示的按钮根据下拉框改动来更改。
写一个监听,当下拉框更改的时候,则调用后台的类,更新状态,再reRender 回传渲染给组件。
核心代码:
在h:selectOneMenu 下拉框中,使用这句话来变动状态显示核心代码:
<a4j:support event="onchange" actionListener="#{InvoiceManager.linkageOfSelectOneMenu}" reRender="selectSuNingInvoice,commitSuNingInvoice,linkageOfSelectOneMenuPanelGrid,linkageOfhSelectOneMenu" ajaxSingle="true"></a4j:support>
话不多说,上完整代码:
前端页面代码:
<%-- 显示查找下拉列表选项--%>
<h:panelGrid columns="2" width="100%" rowClasses="table_row1" id="linkageOfSelectOneMenuPanelGrid" >
<h:selectOneMenu value="#{InvoiceManager.joinType}" readonly="#{InvoiceManager.checkOrder}" id="linkageOfhSelectOneMenu" >
<f:selectItem itemValue="Y" itemLabel="小熊订单"/>
<f:selectItem itemValue="N" itemLabel="小兔订单"/>
<a4j:support event="onchange" actionListener="#{InvoiceManager.linkageOfSelectOneMenu}" reRender="selectSuNingInvoice,commitSuNingInvoice,linkageOfSelectOneMenuPanelGrid,linkageOfhSelectOneMenu" ajaxSingle="true"></a4j:support>
</h:selectOneMenu>
<%-- 确认关联按钮--%>
<a4j:commandLink action="#{InvoiceManager.confirmJoinOrder}" value="#{msg.confirm}" reRender="confirmJoinGroup"
onclick="javascript:Richfaces.showModalPanel('updatingpanel');"
oncomplete="javascript:Richfaces.hideModalPanel('updatingpanel');" rendered="#{!InvoiceManager.close && InvoiceManager.checkOrder}" id ="commitSuNingInvoice">
</a4j:commandLink>
<%-- 查询按钮--%>
<a4j:commandLink action="#{InvoiceManager.checkJoinOrder}" value="#{msg.tbOrder_checkOrder}" reRender="confirmJoinGroup"
onclick="javascript:Richfaces.showModalPanel('updatingpanel');"
oncomplete="javascript:Richfaces.hideModalPanel('updatingpanel');" rendered="#{!InvoiceManager.close && !InvoiceManager.checkOrder}" id ="selectSuNingInvoice">
</a4j:commandLink>
<%-- 关闭按钮--%>
<h:commandLink value="#{msg.close}" rendered="#{!InvoiceManager.close}"
onclick="javascript:Richfaces.hideModalPanel('confirmJoinOrder');return false;" >
</h:commandLink>
</h:panelGrid >
后台代码:
import javax.faces.event.ActionEvent;
导入若干包....
public class InvoiceManager {
private boolean serious;//标记是否显示
private boolean close;//记录关联发票时候是否显示
private String joinType;//记录关联发票时候方式
private boolean checkOrder;
private String checkOrderMessage;
...get和set上边字段
//下拉框联动处理
public String linkageOfSelectOneMenu(ActionEvent e) throws Exception {
//清空值,重置前端,这时候前端接收到就自动改变状态
checkOrder=false;
checkOrderMessage=null;
exportMsg=null;
order_key=null;
System.out.println(joinType);
return null;
}
public void confirmJoinOrder(){
//若干你的需求
}
public void checkJoinOrder(){
//若干你的需求
}
}