5

我有一个刷新几次的页面。我想在第一次刷新页面时设置变量。但是每次页面刷新时都会再次设置此变量。

仅在第一次刷新此变量集时,我需要做什么?

4

3 回答 3

3

将该变量设为session parameter

例如:

HttpSession session = request.getSession(false);//will give a session object only if it exists
int refreshcount =0;
if(session == null)//which means its the first request to the page
{
    refreshcount++;
}
else
{
    //do nothing.
}
于 2013-11-11T11:42:16.070 回答
1

像这样设置jsf页面视图标签的beforePhase属性

<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
        beforePhase="#{pageFlowScope.[YourClass]Bean.beforePhase}">

因此,您需要在 PageFlowScope 中创建一个 bean,然后添加一个像这样的 BeforePhase 方法:

public void beforePhase(PhaseEvent phaseEvent) 
{

    FacesContext context = FacesContext.getCurrentInstance();

    if(!context.getRenderKit().getResponseStateManager().isPostback(context))
    {
     //Do your thing.. (Set your variable etc.)
    }

}

在确保已将 bean 添加到 pageFlowScope 后,您的代码就可以开始使用了...

于 2013-11-11T14:12:21.227 回答
1

这有助于您入门吗?;)

<%
    String yourVar = session.getAttribute( "yourVariable" );

    if(yourVar == null || yourVar == ""){
        yourVar = request.getParameter("sourceVariable");
        session.setAttribute("yourVar", yourVar);
    }   
%>

This is set: ${yourVar}

另一种方法是在控制器端处理它,甚至在转到 JSP 之前。但是它基本上是相同的——如果设置了变量,你可以使用 session 来保存变量。

于 2013-11-11T11:51:03.013 回答