在POST时抛出Javax ViewExpiredException

时间:2015-11-18 16:03:34

标签: jsf jsf-2 viewexpiredexception

我试着理解为什么我的简单webapp上会出现javax ViewExpiredException - 但我似乎并不明白导致视图过期的原因。

这是register.jsf:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:b="http://bootsfaces.net/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core" 
      template="pageTemplate.xhtml">

    <ui:define name="content">
<b:panel title="Registrierung" look="primary">
<h:form>
    <h:panelGrid>

        <h:outputText value="Name:"/>
        <b:inputText value="#{registerController.user.name}" placeholder="Robina Kuh"/>

        <h:outputText value="E-Mail:"/>
        <b:inputText value="#{registerController.user.email}" placeholder="robina.kuh@oc.com" size="32">
            <f:facet name="prepend">
                <h:outputText value="@" />
            </f:facet>
        </b:inputText>

        <b:commandButton value="Registrieren" icon="envelope" action="#{registerController.registerUser}"/>
    </h:panelGrid>
</h:form>
</b:panel>
</ui:define>
</ui:composition>

模板:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:b="http://bootsfaces.net/ui"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
    <title>Lunch</title>
</h:head>
<h:body style="padding: 60px;">
    <ui:include src="topMenu.xhtml" />

    <ui:insert name="content">
        <b:container>
            <b:jumbotron>
                <h1>Da ist wohl etwas schiefgelaufen... Sorry!</h1>
            </b:jumbotron>
        </b:container>
    </ui:insert>
</h:body>
</html>

这是控制器:

@Named("registerController")
@SessionScoped
public class RegisterController implements Serializable {

    @Inject
    private UserManager userManager;
    private User user;

    private Logger logger = Logger.getLogger(RegisterController.class);

    public RegisterController() {
        logger.debug("Created RegisterController");
        user = new User();
        if(user != null)
            logger.debug("Name: " + user.getName()
                    +"\nEmail: " + user.getEmail());

    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String registerUser() {
        logger.debug("registerUser called"
                + "\n Name: " + user.getName()
                +"\nEmail: " + user.getEmail());


        userManager.addUser(user);
        logger.debug("registerUser end");
        return "benutzer.jsf";
    }
}

当我尝试调试它时,它甚至没有进入我的commandButton的动作方法(我正在使用Bootsfaces框架,但我认为这与该框架无关)。

将保存状态设置为客户端有效,但我想了解问题是什么?根据我对JSF的理解,这应该可以在不将状态推送到客户端的情况下工作。 我错过了一些基本的东西吗?

我将webapp部署到widlfly 9服务器。

1 个答案:

答案 0 :(得分:0)

这是使用过的wildfly版本中的一个错误 - 只是使用了新的widlfly 10最终版本,它正在按预期工作。