我是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="<br/>" 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="<br/>" 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="<br/>" 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="<br/>" 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>