2012-01-14 3 views
0

У меня проблема, описанная в названии. Мой selectOneMenu не меняет мое значение:/SelectOneMenu не использует новое значение

<h:column> 
         <f:facet name="header"> 
          <h:outputText value="Vorgesetzter" /> 
         </f:facet> 
         <h:outputText 
          value="#{s.manager.surename}, #{s.manager.forename}" 
          rendered="#{not s.editable}" /> 
         <h:selectOneMenu value="#{s.manager.userID}" 
          styleClass="inputlabel" id="Vorgesetzter" 
          rendered="#{s.editable}"> 
          <f:selectItem 
          itemValue="${null}" itemLabel="-"/> 
          <f:selectItems value="#{userBean.userList}" var="us" 
           itemLabel="#{us.surename}, #{us.forename}" 
           itemValue="#{us.userID}" /> 
         </h:selectOneMenu> 
        </h:column> 
        <h:column> 
         <h:commandButton value="bearbeiten" 
          action="#{sectionBean.switchEdit(s)}" 
          rendered="#{not s.editable}" /> 
         <h:commandButton value="speichern" 
          action="#{sectionBean.updateSection(s)}" 
          rendered="#{s.editable}" /> 
         <h:commandButton value="abbrechen" 
          action="#{sectionBean.switchEdit(s)}" 
          rendered="#{s.editable}" /> 
        </h:column> 

это кусок 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; 
} 

}

метод UpdateSection должен иметь доступ к базе данных и делает Session.update (ы). Но он не сохраняет новые значения ни в selectOneMenu, ни в обычном текстовом поле (не в показанном коде).

Кто-нибудь знает, что случилось?

+0

Предполагается, что 's' в xhmtl является' Section', так что вы можете показать его код? Также обратите внимание, что 's.manager.userID' приведет к изменению идентификатора пользователя менеджера, а не менеджера раздела. Это может не поддерживаться вашей моделью. – Thomas

+0

Являются ли значения модели обновленными JSF? Отлаживайте содержимое раздела 's' в методе 'updateSection()'. Какой API устойчивости вы используете? Hibernate? @Thomas это был первый, что я думал, но OP также упомянул, что «обычный текстовый ящик» тоже не работает. – BalusC

ответ

0

Не знаю, помогает ли это, но в JSF 1.2 у меня были подобные проблемы. Проблема заключалась в том, что h: selectOneMenu вернул значения String вместо объектов, которые я подозревал.

Возможно, эта «ошибка» не была решена для JSF2.0.

попробовать что-то вроде:

// 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> 

и перед началом работы с userId превратить его в объект, который вы хотите, или просто попытаться использовать конвертер.

+1

Это не ошибка. Это по дизайну. Объекты Java не могут передаваться как параметры HTTP-запроса, не преобразовывая их сначала в строку. Даже тогда это не конкретная проблема ОП. Конкретная проблема OP была прибита в комментариях Томаса и меня к этому вопросу. Однако, пока OP не дает никакой обратной связи, невозможно дать подходящий ответ. – BalusC

Смежные вопросы