将h:inputText值传递给f:ajax侦听器



我试图创建一个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 =、消息= javax.el.PropertyNotWritableException:

在bean中我有

public void updateText(AjaxBehaviorEvent event)
            throws AbortProcessingException { }

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

请理解,我熟悉sql,我已经建立了几个CRUD应用程序之前,我的问题是不相关的sql语法或其他方式

<f:ajax>中移除listenerrender,然后在<h:inputText>中添加valueChangeListener

<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是存储新值的变量

相关内容

  • 没有找到相关文章

最新更新