Ajax JSF(seam)如何在没有表单提交的情况下更改组合框内容

Ajax JSF(seam)如何在没有表单提交的情况下更改组合框内容,ajax,jsf,seam,Ajax,Jsf,Seam,我有一个表格输入信息,包括3个字段 文本框用户名(requiree=true) 组合框银行名称(requiree=true) 组合框银行分行(requiree=true) 我想当用户选择银行时,银行分行将在不填写表格的情况下加载(特定用户不需要填写文本框:“用户名”) 例如:我的XHTML表单 <h:form id="ftextform"> <s:validateAll id="ValidateAll"> <fieldset>

我有一个表格输入信息,包括3个字段

  • 文本框用户名(requiree=true)
  • 组合框银行名称(requiree=true)
  • 组合框银行分行(requiree=true)
  • 我想当用户选择银行时,银行分行将在不填写表格的情况下加载(特定用户不需要填写文本框:“用户名”)

    例如:我的XHTML表单

    <h:form id="ftextform">
        <s:validateAll id="ValidateAll">
            <fieldset>
    
                <div class="entry">
                    <h:outputLabel for="name" styleClass="label #{invalid?'errors':''}">name<em>*</em></h:outputLabel>
                    <h:inputText id="name" value="#{branch.name}" required="true" />
                </div>
    
                <div class="entry">
                    <h:selectOneMenu id="creditBank" value="#{branch.creditBank}" immediate="true">
                        <f:selectItems value="#{fExtBankList}"></f:selectItems>
                        <a:support id="onkeyup" event="onchange" actionListener="#{branch.creditBankchange}" reRender="searchResults"/>
                    </h:selectOneMenu>
                </div>
    
                <a:outputPanel id="searchResults">
                <div class="entry">
                    <h:selectOneMenu id="creditBankBranch" value="#{branch.creditBankBranch}">
                        <f:selectItems value="#{branch.creditBankBranchList}"></f:selectItems>
                    </h:selectOneMenu>
                </div>
                </a:outputPanel>
    
            </fieldset>
    
            <fieldset>
                <div class="buttonBox">
                    <h:commandButton id="check" value="Cancel" action="#{branch.cancel}" immediate="true"/>
                    &#160;
                    <h:commandButton id="next" value="Next" action="#{branch.next}"/>
                </div>
            </fieldset>
    
        </s:validateAll>
    </h:form>
    
    
    名字*
     
    
    我的豆豆:

    @Name("branch")
    public class Branch implements IBranch
    {
    
        private static int count = 0;
        private String creditBank;
        private String creditBankBranch = "aaa";
        private String name;
    
        private  List<SelectItem> creditBankBranchList = new ArrayList<SelectItem>();
    
        // action
        public void creditBankchange()
        {
            SelectItem e = new SelectItem(creditBank + count, creditBank);
            creditBankBranchList.add(e);
        }
    ....
    
    @Name(“分支机构”)
    公共类分支实现IBranch
    {
    私有静态整数计数=0;
    私人信贷银行;
    私有字符串creditBankBranch=“aaa”;
    私有字符串名称;
    私有列表creditBankBranchList=新建ArrayList();
    //行动
    公开作废贷记银行更改()
    {
    SelectItem e=新的SelectItem(creditBank+计数,creditBank);
    creditBankBranchList.add(e);
    }
    ....
    
    简单的答案是使用

    详情:

    视图(xhtml)

    
    名字*
     
    
    和bean:

    public class Branch implements IBranch
    {
        private String creditBank;
        private String creditBankBranch;
        private String name;
    
        private  List<SelectItem> creditBankBranchList = new ArrayList<SelectItem>();
        private  List<SelectItem> creditBankList = extBankList();
    
        // action
        public void creditBankchange()
        {
            extBankBranchList();
        }
    
        // (test)create test banks list
        private List<SelectItem>  extBankList()
        {
            List<SelectItem> list = new ArrayList<SelectItem>();
            for(int i =0; i < 10; i ++)
            {
                list.add(new SelectItem(i, Integer.toString(i)));
            }
    
            return list;
        }
    
        // (test)load bank branchs list from bank
        private void extBankBranchList()
        {
            this.creditBankBranchList.clear();
            for(int i =0; i < 10; i ++)
            {
                this.creditBankBranchList.add(new SelectItem(i, "bank " + this.creditBank + "branch " + Integer.toString(i) ));
            }
        }
    
    public类分支实现了IBranch
    {
    私人信贷银行;
    私人银行分行;
    私有字符串名称;
    私有列表creditBankBranchList=新建ArrayList();
    私有列表creditBankList=extBankList();
    //行动
    公开作废贷记银行更改()
    {
    extBankBranchList();
    }
    //(测试)创建测试库列表
    私有列表extBankList()
    {
    列表=新的ArrayList();
    对于(int i=0;i<10;i++)
    {
    添加(新的SelectItem(i,Integer.toString(i));
    }
    退货清单;
    }
    //(测试)从银行加载银行分行列表
    私有无效extBankBranchList()
    {
    this.creditBankBranchList.clear();
    对于(int i=0;i<10;i++)
    {
    this.creditBankBranchList.add(新的SelectItem(i,“bank”+this.creditBank+“branch”+Integer.toString(i));
    }
    }
    
    public class Branch implements IBranch
    {
        private String creditBank;
        private String creditBankBranch;
        private String name;
    
        private  List<SelectItem> creditBankBranchList = new ArrayList<SelectItem>();
        private  List<SelectItem> creditBankList = extBankList();
    
        // action
        public void creditBankchange()
        {
            extBankBranchList();
        }
    
        // (test)create test banks list
        private List<SelectItem>  extBankList()
        {
            List<SelectItem> list = new ArrayList<SelectItem>();
            for(int i =0; i < 10; i ++)
            {
                list.add(new SelectItem(i, Integer.toString(i)));
            }
    
            return list;
        }
    
        // (test)load bank branchs list from bank
        private void extBankBranchList()
        {
            this.creditBankBranchList.clear();
            for(int i =0; i < 10; i ++)
            {
                this.creditBankBranchList.add(new SelectItem(i, "bank " + this.creditBank + "branch " + Integer.toString(i) ));
            }
        }