Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务端口在选择下拉列表时引发异常_Java_Web Services_Jsf_Jakarta Ee_Managed Bean - Fatal编程技术网

Java 服务端口在选择下拉列表时引发异常

Java 服务端口在选择下拉列表时引发异常,java,web-services,jsf,jakarta-ee,managed-bean,Java,Web Services,Jsf,Jakarta Ee,Managed Bean,我有一个级联下拉列表,它在一个系统上运行良好,但在另一个系统上无法运行。请参考以下代码: xhtml: 然后进入InvocationTargetException.java并进入以下方法: public InvocationTargetException(Throwable target) { super((Throwable)null); // Disallow initCause this.target = target; } 最后,在glassfish中,返回的错误是:

我有一个级联下拉列表,它在一个系统上运行良好,但在另一个系统上无法运行。请参考以下代码: xhtml:

然后进入InvocationTargetException.java并进入以下方法:

public InvocationTargetException(Throwable target) {
super((Throwable)null);  // Disallow initCause
    this.target = target;
}
最后,在glassfish中,返回的错误是:

    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
在managdbean中,如果我没有实现serializable,或者如果我没有将服务设置为transient,那么我会得到NotSerializable异常。 这个错误的原因是什么?我如何解决它? 编辑:

serviceBean:

    @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()));
}
reportBean:

  @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

将服务调用和操作方法拆分为不同的请求范围bean类。将其余的保留在视图范围的bean中。最后,通过
@ManagedProperty
将视图作用域注入请求作用域中

@ManagedBean
@RequestScoped
public class ReportActionBean {

    @WebServiceRef(wsdlLocation = "WEB-INF/wsdl/localhost_8080/StatelessWebService/StatelessWebService.wsdl")
    private StatelessWebService_Service service;

    @ManagedProperty("#{reportDataBean}")
    private ReportDataBean reportDataBean;

    // ...
}

那么我在哪里编写wow()方法呢?在我当前的代码中,我正在调用wow()方法中的服务方法(请参见代码中的内容)
wow()
方法是我在回答中提到的操作方法,所以将其放在请求范围的bean中。那么你是说我的viewScoped bean应该只包含getter和setter吗,否—仅包括需要存储在视图范围中的属性(以及明显的getter/setter是)。例如代码中的
exchange
scripID
。我不确定“代码> SL<代码>是从哪里来的,但是如果它来自Web服务,请把它放在请求范围内。顺便说一下,如果WebService每次都返回相同的数据并且很少更改,那么您可能需要考虑将它存储在应用程序范围的bean中,并最终引入一个调度器,该调度器在午夜左右重新加载它。
    @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()));
}
  @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
@ManagedBean
@RequestScoped
public class ReportActionBean {

    @WebServiceRef(wsdlLocation = "WEB-INF/wsdl/localhost_8080/StatelessWebService/StatelessWebService.wsdl")
    private StatelessWebService_Service service;

    @ManagedProperty("#{reportDataBean}")
    private ReportDataBean reportDataBean;

    // ...
}