Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 命令按钮中的JSF ActionListener_Java_Jsf 2 - Fatal编程技术网

Java 命令按钮中的JSF ActionListener

Java 命令按钮中的JSF ActionListener,java,jsf-2,Java,Jsf 2,我在JSF2中制作了两页的简单示例。在第一页上,我通过接口类发布了带有actionListener的命令按钮。目标是当我单击第一页上的按钮时,第二页将显示更改后的值。 但当第一次启动web服务器(JBOSS)时,我得到了错误页面,直到我启动第二个页面。在这种情况下,第二页将显示默认值。在第一页之后,一切都很好,即使我关闭了第二页。发生了什么,做了什么? 以下是错误消息: ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[defa

我在JSF2中制作了两页的简单示例。在第一页上,我通过接口类发布了带有actionListener的命令按钮。目标是当我单击第一页上的按钮时,第二页将显示更改后的值。 但当第一次启动web服务器(JBOSS)时,我得到了错误页面,直到我启动第二个页面。在这种情况下,第二页将显示默认值。在第一页之后,一切都很好,即使我关闭了第二页。发生了什么,做了什么? 以下是错误消息:

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/ActionListenerWithInterface].[Faces Servlet]] (http--0.0.0.0-8080-1) Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
at com.tutoriali.test.UserActionListener.processAction(UserActionListener.java:14) [classes:]
at com.sun.faces.facelets.tag.jsf.core.ActionListenerHandler$LazyActionListener.processAction(ActionListenerHandler.java:129) [jsf-impl-2.1.7-jbossorg-2.jar:]
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at javax.faces.component.UICommand.broadcast(UICommand.java:300) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_37]
以下是xhtml页面: 首页:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html 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"> 

<h:head><title>JSF primer</title></h:head> 
<h:body> 
    <h1>Primer ActionListenera realizovan preko interface-a</h1>
    <h:form>
        <h2>ActionListener</h2>
        <hr />
        <h:commandButton id="SubmitButton" value="Submit" action="#{userData.showResult()}" >
            <f:actionListener type="com.tutoriali.test.UserActionListener"/>
        </h:commandButton>
    </h:form>
</h:body> 
</html>
下面是BeackendBeanUserData.java:

package com.tutoriali.test;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="userData", eager=true)
@SessionScoped

public class UserData implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private String data="Difoltna vrednost";

    public String showResult(){
        return "result";
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

}

它抱怨您的userData对象为null。您在会话中实际在哪里设置它?userData变量在第14I行为null,设置是根据UserActionListener类中第14行的数字。初始化有问题吗?如何克服这个问题呢?第14行是userData.setData(“helloworld!”);在类userActionLitener(接口)中,有谁能对此有所了解?
    package com.tutoriali.test;

import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;

public class UserActionListener implements ActionListener {

    @Override
    public void processAction(ActionEvent arg0) throws AbortProcessingException {

        UserData userData = (UserData)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userData");
        userData.setData("Hello World!");
        System.out.println("******* We are in interface!*************");

    }

}
package com.tutoriali.test;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="userData", eager=true)
@SessionScoped

public class UserData implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private String data="Difoltna vrednost";

    public String showResult(){
        return "result";
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

}