【问题标题】:Altering the initial value in Request scoped bean更改请求范围 bean 中的初始值
【发布时间】:2012-12-25 11:17:02
【问题描述】:

PhaseListener 中调用initialize 方法。

public class myBean implements Serializable
{
 private boolean myBoolean = "true";

 public void initialize()
  {
    if(someCondition)
        {
            this.setMyBoolean(true);
         }
     else
       {
          this.setMyBoolean(false);  // Lets assume myBoolean gets set to false here
       }
  }
}

此方法执行后,index.jsf 会呈现给用户。

index.xhtml 页面中,有以下代码..

<h:commandLink action="#{myBean.secondMethod}" value="someLink">
 </h:commandLink>

public String secondMethod()
{
  log.debug("Value of myBoolean variable is: " +this.isMyBoolean());
  return null;  
}

当用户点击someLink 时,上面的代码会将myBoolean 打印为true 而不是false

myBeanrequest 范围内。由于这是一个新请求,我不得不相信 myBoolean 是新分配的 true 值。

我该如何克服这个问题?我的意思是,当调用secondMethod 时,如果myBooleanfalse,那么在secondMethod 中也应该是false。为什么myBoolean 总是保留true

【问题讨论】:

  • 也许 someCondition 对于回发是真的?
  • 不,如果是false,则始终是false,如果是true,则始终是true
  • 我认为您应该简单地进行一些调试。在初始化方法中设置断点并检查是否为回发调用它以及是否更改布尔值。如果没有其他地方可以更改布尔值,则必须由 initialize 方法调用。
  • 我做了必要的调试。 initialize() 方法没有被调用回发,也没有改变布尔变量的值。当我点击someLink 时,它只调用secondMethod() 这不是为布尔变量设置值的地方。
  • @chkal 我在下面提出了答案。也许你可以回答第没有。 2

标签: jsf jsf-1.2


【解决方案1】:

你确定你的初始化方法被调用了吗?给初始化方法加上一个@PostConstruct注解,保证bean生成后会被调用,怎么样?

【讨论】:

    【解决方案2】:

    我解决了我的问题。我的问题有两个部分。

    1.我该如何克服这个问题?

    2. 为什么myBoolean 总是正确的?

    下面的答案是针对点1.

    <h:commandLink action="#{myBean.secondMethod}" value="someLink">
      <f:param name="newValue" value="#{myBean.myBoolean}"></f:param> // Use f:param to send the actual value   
     </h:commandLink>
    
    
    public String secondMethod()
    {
      String newValueIs = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("newValue");
      log.debug("Value of myBoolean variable is: " +newValueIs); //Prints false if it was false and true if it was true
      return null;  
    }
    

    但是,在我的问题中,我仍然没有得到2. 点的答案。

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2013-06-16
      • 2013-01-21
      • 2011-11-11
      • 1970-01-01
      • 2012-05-26
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多