<h:form>没有显示任何输出

时间:2015-12-10 22:46:09

标签: jsf

我有一个带有表单的menu.xhtml和一个ui:repeat来创建一个导航栏。但不知怎的,它没有显示任何数据。

名为menu.xhtml:

    <?xml version='1.0' encoding='UTF-8' ?>
<!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:ui="http://xmlns.jcp.org/jsf/facelets">
    <h:head>
        <title>Kitchen Memories</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"></link>
    </h:head>
    <h:body>
        <h4>Begin</h4>
        <h:form>
            <ui:repeat value="#{menuController.items}" var="item">
                <h:commandButton value="#{item.name}"
                                 action="#{menuController.setActive(item)}"
                                 style="margin-bottom: 5px;"
                                 immediate="true"
                                 styleClass="#{item.active == true ? 'btn btn-primary' : 'btn btn-default'}"
                                 />
                <br/>
            </ui:repeat>
        </h:form>
        <h4>END</h4>
    </h:body>
</html>

<h4>开始和结束是可见的。其余的没有。

我的MenuController.java:

@Named
@SessionScoped
public class MenuController implements Serializable
{

    private List<Menu> items;


    public MenuController() 
    {
    }

    public void init()
    {
    items = new LinkedList<>();
    items.add(new Menu("Rezept finden", "findRecipe.xhtml", false));
    items.add(new Menu("Rezepte verwalten", "manageRecipe.xhtml", false));
    items.add(new Menu("Zutaten verwalten", "manageIngredient.xhtml", false));
    System.out.println("MenuController aufgerufen.");
    }

    public String setActive(Menu item)
    {
        System.out.println("Call: setActive");
        setAllInactive();
        item.setActive(true);
        return item.getUrl();
    }

    private void setAllInactive()
    {
        System.out.println("Call: setAllInactive()");
        for(int i = 0; i < items.size(); i++)
        {
            items.get(i).setActive(false);
        }
    }

    public List<Menu> getItems() {
        System.out.println("Call getItems");
        return items;
    }

    public void setItems(List<Menu> items) {
        this.items = items;
    }
}

我的Menu.java

public class Menu {

    private String name;
    private String url;
    private boolean active;

    public Menu(String name, String url, boolean active) {
        this.name = name;
        this.url = url;
        this.active = active;
    }

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    public Menu() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

当我清理并构建项目时,我得到一个NullPointerException,但我不知道从哪里以及为什么我得到它。

Information:   Session event listener threw exception
java.lang.NullPointerException
    at org.jboss.weld.servlet.WeldTerminalListener.getSessionContext(WeldTerminalListener.java:72)
    at org.jboss.weld.servlet.WeldTerminalListener.sessionDestroyed(WeldTerminalListener.java:64)
    at org.apache.catalina.session.StandardSession.expire(StandardSession.java:910)
    at org.apache.catalina.session.StandardSession.expire(StandardSession.java:854)
    at org.apache.catalina.session.StandardSession.expire(StandardSession.java:842)
    at org.apache.catalina.session.StandardManager.stop(StandardManager.java:955)
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:6164)
    at com.sun.enterprise.web.WebModule.stop(WebModule.java:720)
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1172)
    at com.sun.enterprise.web.WebContainer.unloadWebModule(WebContainer.java:2439)
    at com.sun.enterprise.web.WebContainer.unloadWebModule(WebContainer.java:2394)
    at com.sun.enterprise.web.WebApplication.stop(WebApplication.java:190)
    at org.glassfish.internal.data.EngineRef.stop(EngineRef.java:161)
    at org.glassfish.internal.data.ModuleInfo.stop(ModuleInfo.java:324)
    at org.glassfish.internal.data.ApplicationInfo.stop(ApplicationInfo.java:380)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.unload(ApplicationLifecycle.java:1059)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.undeploy(ApplicationLifecycle.java:1099)
    at org.glassfish.deployment.admin.UndeployCommand.execute(UndeployCommand.java:412)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
    at java.lang.Thread.run(Thread.java:745)

我真的不知道为什么它没有显示任何东西。

0 个答案:

没有答案
相关问题