![](/img/trans.png)
[英]Update Bean Property of a <rich:dataTable> using JavaScript in JSF
[英]JSF, multiple bean update property in a form
由於我有更多時間來編寫,因此我將問題編輯得更精確。
我有一個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屬性在驗證方法中初始化,因此它具有值not null
)
public class User {
public User() {}
String name;
Dog dog;
(...get, set, ect...)
這是我沒有設置托管的其他bean,因為它僅由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是可以的:
編輯:我為我的用戶管理的bean添加了一個。 雖然,沒有任何改變......
<managed-property>
<property-name>dog</property-name>
<property-class>package.Dog</property-class>
<value>#{Dog}</value>
</managed-property>
您需要在構建或初始化父bean期間預先實例化嵌套bean。 JSF不會為你做那件事。
所以代替:
public class User {
Dog dog;
}
你需要直接實例化它:
public class User {
Dog dog = new Dog();
}
或者在構造函數中:
public class User {
Dog dog;
public User() {
this.dog = new Dog();
}
}
或者如果Dog
實際上是托管bean,則通過faces-config.xml
將其作為托管屬性注入User
:
<managed-bean>
<managed-bean-name>dog</managed-bean-name>
<managed-bean-class>mypackage.Dog</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>mypackage.User</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>dog</property-name>
<value>#{dog}</value>
</managed-property>
</managed-bean>
在這一切中,我假設您的屬性和getter以及setter是根據Javabean命名約定命名的 。
這應該工作。 我建議通過調試器運行代碼,但我的第一個猜測是User.dog
為null
。 另外,我對大寫bean名稱User
有點警惕。 那應該是user
(除非你指的是User
類中的靜態字段,這在JSF環境中會是一個可怕的錯誤)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.