我试图创建一个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>
中移除listener
和render
,然后在<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
是存储新值的变量