あるシステムでは正常に動作するが、別のシステムでは動作しないカスケード ドロップダウンがあります。以下のコードを参照してください: xhtml:
<p:selectOneMenu style="width: 150px" value="#{reportBean.exchange}">
<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>
wow() メソッドは呼び出されません。Bean コードは次のとおりです。
@javax.faces.bean.ManagedBean
@javax.faces.bean.ViewScoped
public class reportBean implements Serializable {
@WebServiceRef(wsdlLocation = "WEB-INF/wsdl/localhost_8080/StatelessWebService/StatelessWebService.wsdl")
transient private StatelessWebService_Service service ;
private java.util.List<service.MasterScrip> getAllScripByExchange(java.lang.String exchange) {
service.StatelessWebService port = service.getStatelessWebServicePort();
return port.getAllScripByExchange(exchange);
}
public void wow()
{
sl=getAllScripByExchange(exchange);
}
私はデバッグし、デバッグポイントがライン上にあることを発見しました
service.StatelessWebService port = service.getStatelessWebServicePort();
InvocationTargetException.java に入り、次のメソッドに進みます。
public InvocationTargetException(Throwable target) {
super((Throwable)null); // Disallow initCause
this.target = target;
}
そして最後にグラスフィッシュで返されるエラーは次のとおりです。
WARNING: /ClientTemplate/tradeReport.xhtml @17,74 listener="#{reportBean.wow()}": java.lang.NullPointerException
javax.el.ELException: /ClientTemplate/tradeReport.xhtml @17,74 listener="#{reportBean.wow()}": java.lang.NullPointerException
managd Bean で、シリアライズ可能を実装しない場合、またはサービスを一時的にしない場合、NotSerializable 例外が発生します。このエラーの原因は何ですか? どうすれば解決できますか? 編集:
サービスビーン:
@ManagedBean
@javax.faces.bean.RequestScoped
public class serviceBean{
@WebServiceRef(wsdlLocation = "WEB-INF/wsdl/localhost_8080/StatelessWebService/StatelessWebService.wsdl")
private StatelessWebService_Service service;
@ManagedProperty("#{reportBean}")
private reportBean reportBean;
public beans.reportBean getReportBean() {
return reportBean;
}
public void setReportBean(beans.reportBean reportBean) {
this.reportBean = reportBean;
} //other props
public String getExchange() {
return exchange;
}
public void setExchange(String exchange) {
this.exchange = exchange;
}
public void wow()
{
reportBean.setSl(getAllScripByExchange(reportBean.getExchange()));
}
レポート Bean:
@javax.faces.bean.ManagedBean
@javax.faces.bean.ViewScoped
public class reportBean implements Serializable {
private Integer scripID;
private String exchange;
private List<service.TradeStock> tradeList;
private List<MasterScrip> sl; //get set
今、私は次のエラーが発生します:
SEVERE: Error Rendering View[/ClientTemplate/tradeReport.xhtml]
javax.faces.FacesException: java.io.NotSerializableException: service.MasterScrip