仅为Java bean的首次页面刷新设置变量?

时间:2013-11-11 11:41:21

标签: java jsp oracle-adf jdeveloper

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

只有在第一次刷新此变量时才需要做什么?

3 个答案:

答案 0 :(得分:2)

将该变量设为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.
}

答案 1 :(得分:1)

这有助于您入门吗? ;)

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

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

This is set: ${yourVar}

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

答案 2 :(得分: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}">

所以你要创建一个bean,比如说PageFlowScope,然后像这样添加一个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后,您的代码就可以了...