Java 选择一个功能表不';不要使用新值
我在标题中描述了一个问题。我的SelectOne功能表不会更改我的值:/Java 选择一个功能表不';不要使用新值,java,jsf,Java,Jsf,我在标题中描述了一个问题。我的SelectOne功能表不会更改我的值:/ 这是sections.xhtml的一部分。它被一个表单标签覆盖 这是我的豆子: package at.ac.htlperg.beans; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import at.ac.htlperg.dao.SectionDAO; import
这是sections.xhtml的一部分。它被一个表单标签覆盖
这是我的豆子:
package at.ac.htlperg.beans;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import at.ac.htlperg.dao.SectionDAO;
import at.ac.htlperg.model.Section;
@ManagedBean
@SessionScoped
public class SectionBean {
SectionDAO sectionDAO;
public SectionBean() {
sectionDAO = new SectionDAO();
}
public SectionDAO getSectionDAO() {
return sectionDAO;
}
public void setSectionDAO(SectionDAO sectionDAO) {
this.sectionDAO = sectionDAO;
}
public List<Section> getSectionList() {
return sectionDAO.getSectionList();
}
public String deleteSection(Section s) {
sectionDAO.deleteSection(s);
return null;
}
public String switchEdit(Section s) {
sectionDAO.switchEdit(s);
return null;
}
public String saveSection() {
sectionDAO.saveSection(sectionDAO.getSection());
return "/secured/sealed/sections.xhtml";
}
public String updateSection(Section s) {
sectionDAO.updateSection(s);
this.switchEdit(s);
return null;
}
package at.ac.htlperg.beans;
导入java.util.List;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.SessionScoped;
导入at.ac.htlperg.dao.SectionDAO;
导入at.ac.htlperg.model.Section;
@ManagedBean
@会议范围
公共类分区bean{
段道段道;
公共部分bean(){
sectionDAO=新sectionDAO();
}
公共部分dao getSectionDAO(){
返回段道;
}
公共无效设置节DAO(节DAO节DAO){
this.sectionDAO=sectionDAO;
}
公共列表getSectionList(){
返回sectionDAO.getSectionList();
}
公共字符串删除节(s节){
节。删除节;
返回null;
}
公共字符串开关编辑(s部分){
第DAO节。开关编辑;
返回null;
}
公共字符串saveSection(){
sectionDAO.saveSection(sectionDAO.getSection());
return“/secured/sealed/sections.xhtml”;
}
公共字符串更新节(s节){
节。更新节;
这是一个.switchEdit(s);
返回null;
}
}
方法updateSection应该访问数据库并执行session.update。
但它不会保存新值,无论是在SelectOne菜单中,还是在上面的常用文本框中(不在显示的代码中)
有人知道出了什么问题吗?不知道这是否有帮助,但在JSF1.2中,我遇到了类似的问题。问题是h:selectOneMenu返回的是字符串值,而不是我怀疑的对象 也许JSF2.0并没有解决这个“bug” 尝试以下方法:
// ManagedBean
String userId;
String getUserId(){return this.userId;}
void setUserId(String userId){this.userId = userId;}
// JSF
<h:selectOneMenu value="#{managedBean.userId}"
styleClass="inputlabel" id="Vorgesetzter"
rendered="#{s.editable}">
<f:selectItems value="#{userBean.userList}" var="us"
itemLabel="#{us.surename}, #{us.forename}"
itemValue="#{us.userID}" />
</h:selectOneMenu>
//ManagedBean
字符串用户标识;
字符串getUserId(){返回this.userId;}
void setUserId(字符串userId){this.userId=userId;}
//JSF
在使用
userId
之前,请将其转换为您想要的对象,或者尝试使用转换器。假设XHTML中的s
是部分,那么您可以显示其代码吗?还请注意,s.manager.userID
将导致更改管理器的用户id,而不是该节的管理器。您的模型可能不支持这一点。JSF是否更新了模型值?调试updateSection()
方法中节s
的内容。您使用的是什么持久性API?冬眠@Thomas这也是我第一次想到的,但是OP也提到“普通的文本框”也不起作用。这不是一个bug。这是故意的。如果不先将Java对象转换为字符串,则无法将其作为HTTP请求参数传递。即便如此,这也不是OP的具体问题。OP的具体问题已经在托马斯和我对这个问题的评论中确定下来。然而,只要OP不提供任何反馈,就不可能给出合适的答案。