フォーム スニペット:
<h:selectOneMenu id="supervisor" value="#{newTopic.supervisor}">
<s:objectConverter/>
<f:selectItems value="#{supervisors}" var="_supervisor"
itemValue="#{_supervisor}"
itemLabel="#{_supervisor.name.firstName} #{_supervisor.name.lastName}"></f:selectItems>
</h:selectOneMenu>
<h:commandButton action="#{newTopicAction.createTopic}" value="Create topic"/>
コントローラーのアクション:
@Model
public class NewTopicAction implements Serializable{
@Inject
private TopicManager topicManager;
private ThesisTopic newTopic;
public String createTopic(){
topicManager.createTopic(newTopic);
return "topics?faces-redirect=true";
}
@PostConstruct
public void init(){
newTopic = new ThesisTopic();
}
@Produces
@Model
public ThesisTopic getNewTopic(){
return newTopic;
}
}
newTopicAction.createTopic が呼び出されたときに、選択したスーパーバイザーが newTopic.supervisor に入力されないのはなぜですか? このフィールドを除いて、他のすべてのフィールドは期待どおりに機能します。私が正しく理解していないのはselectOneMenuに関するものかもしれません。