java - 如何将 JSF InputText 值传递给 ajax 监听器

标签 java jsf

我想将输入框中的值传递给ajax监听器。请引用以下代码。

JSF:

<h:dataTable id="cleanerAttendance" value="#{bean.objMap.entrySet().toArray()}">
    <h:column> 
        <f:facet name="header">
            <div>Attendance</div>
        </f:facet>
        <div>
            <h:inputText value="entry.value">
                <f:ajax execute="@this" listener="#{bean.updateMap(entry)}"/>
            </h:inputText>
        </div>
    </h:column>
</h:dataTable>

bean :

private Map<Obj2,Integer> objMap = new HashMap<Obj2,Integer>();

public void updateMap(Entry<Obj2,Integer> entry){
    System.out.println(entry.getValue());
    objMap.put(entry.getKey(), entry.getValue());
}

我想在输入值更改时更新 objMap。但是当我运行这个时, updateMap 方法被调用。但是 entry.getValue() 打印为 null。有谁知道为什么它不起作用以及执行此操作的正确方法?

我已经检查了以下答案,但它对我不起作用。

Pass h:inputText value to f:ajax listener

How to pass parameter to f:ajax in h:inputText? f:param does not work

最佳答案

我会用其他方式来做。首先为Map提供一个getter:

public Map<Obj2,Integer> getObjMap(){
  return objMap;
}

然后迭代键并根据您感兴趣的键设置值:

<h:dataTable id="cleanerAttendance" value="#{bean.objMap.keySet().toArray()}" var="obj">
    <h:column> 
        <f:facet name="header">
            <div>Attendance</div>
        </f:facet>
        <div>
            <h:inputText value="#{bean.objMap[obj]}">
                <f:ajax execute="@this" />
            </h:inputText>
        </div>
    </h:column>
</h:dataTable>

一旦每个 ajax 绑定(bind)事件发生,这将基本上调用模型更新,无需监听器。还没有亲自测试过,所以尝试一下!

另请参阅:

关于java - 如何将 JSF InputText 值传递给 ajax 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019750/

相关文章:

xhtml - JSF2 : limiting cc:attribute to a given object type within a List

css - PrimeFaces 大型菜单隐藏在中心内容、左侧和右侧栏后面

javascript - 如何创建 JSF 过滤器/url 模式来保护 javascript

java - Node.js 非阻塞 IO 与使用 NIO 的 java 线程池模式。不清楚的调度行为

java - Vigenere 解密奇数

java - eclipse 从 tomcat webapp 导入项目

validation - 当为空时,有条件地跳过验证 f :selectItem in p/h:selectOneMenu is selected

java - 使用 maven-tycho : 导出 Eclipse 插件时为 "API restriction error"

java - 本地数据库上的“搜索引擎”

mysql - java.lang.IllegalStateException : Attempting to execute an operation on a closed EntityManagerFactory 错误