【问题标题】:<a4j:actionparam send value alway null<a4j:actionparam 发送值始终为空
【发布时间】:2010-01-19 11:17:06
【问题描述】:

我有这样的代码

<a4j:region>
 <h:inputText label="User" id="user"  size="30" value="#{bean2.val1}" required="true" >
    <a4j:support event="onblur" action="#{bean.action}" reRender="outputName" bypassUpdates="true">
       <a4j:actionparam name="user" assignTo="#{bean.user}" value="#{user}"  />
    </a4j:support>
 </h:inputText>    
</a4j:region>
<h:message for="user"/>

我的 bean 类是这样的:

  private String user;
  public String getUser() {
        System.out.println("user=="+user);
    return user;
  }
  public void setUser(String user) {
      this.user = user;
  }
  public void action(){
      getUser();
  } 

但是每次onblur事件发生时,user的值总是null。

我只想在 onblur 事件发生时将用户的值发送到 bean。所以我可以获得用户的价值。 任何人都可以帮助我吗? (对不起我的英语)

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    好吧,#{user} 的值始终为 null - 请求属性中没有这样的东西。您可以删除&lt;a4j:actionparam 并留下&lt;a4j:support,最好放置ajaxSignle=true。这将首先提交文本输入的值,然后执行操作(至少应该如此)。还要输入immediate=true 绕过验证。

    你评论后,我想你也可以试试:

    <a4j:actionparam name="user" assignTo="#{bean.user}" value="#{bean2.val1}"  />
    

    或者手动在action 方法中进行赋值。只需将第二个 bean 注入第一个(假设您使用 DI 框架)

    【讨论】:

    • 谢谢博卓。我尝试过获取 bean.user =org.ajax4jsf.component.html.HtmlAjaxSupport@18fe9b5 的值。从我的角度来看,inputText 值是 bean2.val。对 bean.action 的 Onblur 操作。我想从该操作或 bean.user 中获取输入值,这可能吗? (那里有 2 种不同的豆子)
    【解决方案2】:

    正如已经指出的那样,该值将始终为 null,因为它永远不会是 se。如果你想要这个值,你可以将托管属性 val1 从 bean2 注入到 bean。

    使用 ManagedProperty:

    class Bean {
        @ManagedProperty{value="#{bean2.val}"
        private user;
    }
    

    值会自动注入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多