【问题标题】:Pass h:inputText value to f:ajax listener [duplicate]将 h:inputText 值传递给 f:ajax 侦听器 [重复]
【发布时间】:2014-07-22 05:03:31
【问题描述】:

我正在尝试创建一个可以在单个页面上完全编辑和显示的 sql 数据表。 我正在使用 jsf 和一个命名的 bean。 我使用 arraylist bean 对象来存储和显示数据。

public List<RegionBean> getRegions()throws SQLException{

数据显示在 inputText 元素中。当我尝试使用支持 bean 中的 sql 方法更新信息时,它无法将更新的文本添加到 sql 数据库。 它将简单地放置与最初显示的相同的值。 我想要做的是让输入文本框显示数组列表中的数据值,然后在它们被编辑后将它们存储在 bean 的不同字段中。

这是我现在的代码。

<h:dataTable value="#{regionBean.regions}" var="regions"/>


<h:column>
    <f:facet name="header">Region ID</f:facet>                       
    #{regions.regionID}
</h:column>
<h:column>
    <f:facet name="header">Region Description</f:facet>
    <h:inputText id="des" value="#{regions.regionDescription}">
    <f:ajax event="change" 
            listener="#{regionBean.updateText(event)}"
            render="des"/>
</h:inputText>
<h:column>
    <f:facet name="header">Save</f:facet>
    <h:commandButton action="#{regionBeanupdate(regions.regionID)}" value="Update">
    </h:commandButton>
</h:column>

我遇到的问题 UIComponent-ClientId=, Message=javax.el.PropertyNotWritableException:

在我的豆子里

public void updateText(AjaxBehaviorEvent event)
            throws AbortProcessingException { }

如何将新的输入文本框值传递给此方法,以便将其作为字符串存储在 bean 中,从而能够使用它来更新 sql 数据库。

请理解我熟悉 sql,并且我之前构建了几个 CRUD 应用程序,我的问题与 sql 语法或其他方面无关。

【问题讨论】:

    标签: jsf


    【解决方案1】:

    &lt;f:ajax&gt; 中删除listenerrender,然后将valueChangeListener 添加到&lt;h:inputText&gt;

    <h:inputText value="#{regions.regionDescription}" valueChangeListener="#{region.updateText}">
         <f:ajax event="change"/>
    </h:inputText>
    

    然后在你的 bean 中:

    public void updateText(ValueChangeEvent event){
       input = event.getNewValue().toString();
    }
    

    注意:input 是存储新值的变量。

    【讨论】:

    • 对不起哥们,它不起作用
    • 你遇到了什么错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2012-04-08
    相关资源
    最近更新 更多