Fire CommandButton顺序执行多个inputtext

时间:2016-09-20 07:49:25

标签: jsf primefaces jsf-2

我是JSF的新手,我从最近两天开始面临以下问题: 我有两个输入字段和一个CommandButton,具体取决于填充的InputText,将触发相应的事件(在相同的按钮上)。 我尝试了不同的approchs来解决我的问题但是徒劳无功,所以现在我提前寻找你的帮助

第一个approch:我实现了一个方法actionButton,它接受ActionEvent参数以便将其签名为commandButton-actionListener属性。

第二个approch我开发了一个类,它实现了ActionListener接口并ovverriding processAction方法

第三个approch我试图使用javaScript onclick方法....

我的应用程序工作正常,因为我有一个inputText字段和一个按钮,

这里我的文件有一些微小的变化: 我的Bean看起来如下:

    import java.sql.SQLException;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.event.ActionEvent;

import org.primefaces.context.RequestContext;
import ..basics.DataSetCollectionBeanBase;
import .webrfresnrsuche.services.WrrnsService;

@ManagedBean(name = "wrrnsBean")
@RequestScoped
public class WrrnsBean extends DataSetCollectionBeanBase {

    public String dbnumber;
    public String rfResNr;
    WrrnsService rrns;


    public WrrnsBean() {
    }

    public void startsearch(String dbnumber) throws SQLException {

        this.dbnumber = dbnumber;
        WrrnsService rrnss = new WrrnsService();
        this.rfResNr = rrnss.getRentfoxNummer(dbnumber);
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Rentfox-RES-Nummer:", this.rfResNr);
        RequestContext.getCurrentInstance().showMessageInDialog(message);
    }

    public void startsearchReservationNummer(String rentfoxresnr) throws SQLException {
        this.rfResNr = rentfoxresnr;
        rrns = new WrrnsService();

        try {

            this.dbnumber = rrns.getReservationNummer(rfResNr);
            String snunber = this.dbnumber;
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Original RES-Nummer", this.dbnumber);
            RequestContext.getCurrentInstance().showMessageInDialog(message);

        } catch (SQLException e) {
            System.out.println(e.getMessage() + "  " + e.getStackTrace());
        }
    }

    public String getdbnumber() {
        return dbnumber;
    }

    public void setdbnumber(String dbnumber) {
        this.dbnumber = dbnumber;
    }

    public String getRfResNr() {
        return rfResNr;
    }

    public void setRfResNr(String rfResNr) {
        this.rfResNr = rfResNr;
    }

    public WrrnsService getRrns() {
        return rrns;
    }

    public void setRrns(WrrnsService rrns) {
        this.rrns = rrns;
    }


    public void buttonAction(ActionEvent event) throws SQLException {



        List<UIComponent> components = event.getComponent().getParent().getChildren();

        for(UIComponent component:components){
            if(component.getId().equals("dbnumber"))
                startsearch(dbnumber);

            else if(component.getId().equals("reservationnummer"))
                startsearchReservationNummer(rfResNr);
        }

    }

}

我的XHTML文件如下:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                template="/WEB-INF/templates/defaultTemplate.xhtml">

    <ui:define name="header">
        RES-Nr-Search
    </ui:define>

    <ui:define name="content">
        <h:form>
            <h:outputScript name="jsf.js" library="javax.faces" targer="head"></h:outputScript>
            <p:panel header="inpt Db number"
                     styleClass="ui-panel-titlebar ui-helper-clearfix ui-corner-all">
                <h:panelGrid id="searchPanel">
                    <f:facet name="header">
                        <p:row>
                            <p:column>
                                <p:outputLabel
                                    style="font-size:0.9em; float:left"
                                    for="dbnumber">start searching.
                                </p:outputLabel>
                            </p:column>
                        </p:row>
                        <h:outputText value="&lt;br/&gt;" escape="false" />
                        <p:row>
                            <p:column>
                                <p:outputLabel
                                    style="font-size:0.9em; float:left"
                                    for="dbnumber"> Pop-Up-window will be prompt.
                                </p:outputLabel>
                            </p:column>
                        </p:row>
                    </f:facet>
                    <h:outputText value="&lt;br/&gt;" escape="false" />
                    <p:row>
                        <p:column>
                            <h:outputLabel value="Nummer Eingeben" for="dbnumber" style="float:left"/>
                            <p:inputText id="dbnumber"
                                         value="#{wrrnsBean.dbnumber}" style="float:left" >

                             </p:inputText>
                             <h:message for="dbnumber" style="coloe:red"/>
                        </p:column>
                    </p:row>
                    <h:outputText value="&lt;br/&gt;" escape="false" />
                    <p:row>
                        <p:column> 
                            <h:outputLabel value="Rentfox-Res-mmer" for="reservationnummer" style="float:left"/>
                            <p:inputText id="reservationnummer" 
                                         value="#{wrrnsBean.rfResNr}" style="float:left" >                                          

                             </p:inputText> 

                         </p:column>
                   </p:row> 
                    <h:outputText value="&lt;br/&gt;" escape="false" /> 
                    <p:row>


                        <p:column>
                       <p:commandButton id="searchstart" value=" start search..."  onclick="jsf.ajax.request(this, event, {exceute: 'form:searchstart}); return false;"
                                        actionListener="#{wrrnsBean.buttonAction}">

                             </p:commandButton>
                        </p:column>
                    </p:row>
                </h:panelGrid>
            </p:panel>
        </h:form>
    </ui:define>
</ui:composition>

0 个答案:

没有答案