我编辑了我的问题,使其更加精确,因为我有更多的时间来写它。
我有一个JSF表单,应该修改狗的不同属性的值:
<h:form id="submit">
<h:outputLabel value="Dog name:"/>
<h:inputText value="#{User.dog.name}" id="dogName"/>
<h:outputLabel value="Name :"/>
<h:inputSecret value="#{User.name}" id="name" />
<h:commandButton type="submit" value="Submit" />
</h:form>
这是我的受控Bean
User.java
:
(所有的getter和setter都是良好有效的,因为这是一个bean,构造函数为空)。
(最初Dog属性在验证方法中初始化,因此它具有值且不为null
)。public class User {
public User() {}
String name;
Dog dog;
(...get, set, ect...)
这是另一个豆类,我没有设置它为托管,因为它只被User类使用 Dog.java
:
public class Dog{
public User() {}
String dog_name;
(...)
当然,这只是一个简单的例子,以便理解这个问题。
当我发送表单时,User.name
属性会更新,但User.dog.name
属性不会更新。
如何更新两个Java类的值?
提交表单后,我显示当前值,只有User.name
已更改:
System.out.println(User.name); //表单提交后值已更改 System.out.println(User.dog.name); //表单提交后值未更改
我不知道你是否明白我的问题,我想在我的JSF表单中操作Dog类属性,尽管我不会直接修改Dog bean,只修改User.Dog
...
顺便说一下,faces-config没问题:
编辑: 我已经为我的User托管bean添加了一个<managed-property>。 尽管如此,没有任何变化...
<managed-property>
<property-name>dog</property-name>
<property-class>package.Dog</property-class>
<value>#{Dog}</value>
</managed-property>