Cascading p: Modellwert von selectOneMenu nicht festgelegt
Ich habe eine Anwendung, in der ich eine kaskadierende Dropdown-, eine einfache Dropdown- und eine Submit-Befehlsschaltfläche habe. Ich möchte den Bericht in datatable anzeigen, indem ich verschiedene Kriterien aus den Dropdown-Listen auswähle. Alles funktioniert einwandfrei, außer wenn ich die Kriterien aus dem Dropdown-Menü für Kinder auswählen möchte. Es bindet nicht an seinen Wert in der verwalteten Bean (dies wurde durch Debugging festgestellt). Hier ist mein Code: xhtml:
<h:outputText value="Exchange"/>
<p:selectOneMenu style="width: 150px" value="#{reportBean.exchange}">
<f:selectItem itemLabel="--select--" itemValue="--select--"/>
<f:selectItem itemLabel="NSE" itemValue="nse"/>
<f:selectItem itemLabel="BSE" itemValue="bse"/>
<p:ajax update="sym" listener="#{reportBean.wow}"/>
</p:selectOneMenu>
<h:outputText value="Scrip Symbol :"/>
<p:selectOneMenu value="#{reportBean.scripID}" id="sym" style="width: 100px">
<f:selectItem itemLabel="All" itemValue="0"/>
<f:selectItems var="scrip" value="#{reportBean.sl}" itemLabel="#{scrip.scripSymbol}" itemValue="#{scrip.scripID}"/>
</p:selectOneMenu>
<h:outputText value="Order Type :"/>
<p:selectOneMenu style="width: 100px" value="#{reportBean.orderType}">
<f:selectItem itemLabel="All" itemValue="All"/>
<f:selectItem itemLabel="Buy" itemValue="B"/>
<f:selectItem itemLabel="Sell" itemValue="S"/>
</p:selectOneMenu>
<p:commandButton ajax="true" update="dt" value="Submit" action="#{reportBean.getTradeByUserName()}" type="submit"/>
</h:panelGrid>
<p:dataTable id="dt" var="trade" widgetVar="scripTab"
emptyMessage="No trade found with given criteria"
value="#{reportBean.tradeList}"
paginator="true" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="3,5,10" rows="3" >
<p:column>....
Managed Bean Code:
public void wow()
{
sl=getAllScripByExchange(exchange);
}
public Integer getScripID() {
return scripID;
}
public void setScripID(Integer scripID) {
MasterScrip sm =getScripByID(scripID);
if(sm!=null)
this.scripSymbol=sm.getScripSymbol();
this.scripID = scripID;
}
public List<TradeStock> getTradeList() {
return tradeList;
}
public void setTradeList(List<TradeStock> tradeList) {
this.tradeList = tradeList;
}
public List<service.TradeStock> getTradeByUserName()
{
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpSession session = request.getSession(true);
String uname = session.getAttribute("uname").toString();
tradeList= getTradeReport(scripID, uname, exchange, orderType);
return tradeList;
}
Bohnenmethode:
@Override
public Collection<TradeStock> getTradeReport(Integer scripID, String uname, String exchange, String tradeType) {
String strQuery = null;
strQuery = "Select t from TradeStock t where t.userName.userName = :userName ";
if(! exchange.equalsIgnoreCase("All"))
{
strQuery += " and t.scripID.exchange = '" + exchange + "'";
}
if(scripID>0)
{
strQuery += " and t.scripID.scripID = " + scripID;
}
if(! tradeType.equalsIgnoreCase("All"))
{
strQuery += " and t.orderID.buySell = '" + tradeType + "'";
}
Collection<TradeStock> c = em.createQuery(strQuery).setParameter("userName",uname).getResultList();
return c;
}
Warum ist der Wert nicht an die Bean Requisiten gebunden? Wie löse ich das? (Mein Anliegen ist, dass derselbe Code gestern funktioniert hat, aber heute, als ich den gleichen Code ausgeführt habe, hat er mich beunruhigt).
bearbeitet: faces-config
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<managed-bean>
<managed-bean-name>userReportBean</managed-bean-name>
<managed-bean-class>UserReportBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/adminpages/editScrip.xhtml</from-view-id>
<navigation-case>
<from-action>#{manageScrip.updateScrip}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/adminpages/manageScrip.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/adminpages/addScrip.xhtml</from-view-id>
<navigation-case>
<from-action>#{manageScrip.addScrip}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/adminpages/manageScrip.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/adminpages/manageScrip.xhtml</from-view-id>
<navigation-case>
<from-action>#{manageScrip.returnEdit}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/adminpages/editScrip.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>equityBean</managed-bean-name>
<managed-bean-class>beans.equityBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>reportBean</managed-bean-name>
<managed-bean-class>beans.reportBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>