我需要解決這一業務需求,但我遇到了一些不需要的行爲,我需要專家的幫助。 我使用JSF 2.2.13,總理面臨5.3同一個豆的多個託管屬性,在同一類
我有這樣
@ManagedBean(name = "userBean")
@RequestScoped
public class UserBean implements Serializable {
private Long id;
private String firstName;
private String lastName;
@ManagedProperty(value = "#{countryBean}")
private CountryBean phoneCode1;
private String phoneNumber1;
@ManagedProperty(value = "#{countryBean}")
private CountryBean phoneCode2;
private String phoneNumber2;
...
...getter/setter
一個的UserBean像這樣
@ManagedBean(name = "countryBean")
@RequestScoped
public class CountryBean implements Serializable{
private Long id;
private String isoCode;
private String phoneCode;
...
...getter/setter
的問題CountryBean(因爲你可能已經知道)是在UserBean內部,我們有超過1個字段(phoneCode1,phoneCode2)具有相同的託管屬性(countryBean)。
奇怪的行爲是在數據庫(MySQL)內部,我的應用程序爲所有這些字段(phoneCode1,phoneCode2)保存相同的值,即使在前端選擇了不同的值。
在前端我有這段代碼
<h:selectOneMenu value="#{userController.userBean.phoneCode1.id}" class="form-control">
<f:selectItem itemLabel="#{msg['seleziona']}" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{applicationScopedBean.countries}" var="ac" itemValue="#{ac.id}" itemLabel="#{ac.phoneCode}"/>
</h:selectOneMenu>
<h:selectOneMenu value="#{userController.userBean.phoneCode2.id}" class="form-control">
<f:selectItem itemLabel="#{msg['seleziona']}" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{applicationScopedBean.countries}" var="ac" itemValue="#{ac.id}" itemLabel="#{ac.phoneCode}"/>
</h:selectOneMenu>
因此,以何種方式,我們可以解決這個業務需求?
我看到過類似的問題,但我不明白我是不是很好地使用JSF,或者它是JSF的限制。 但從它類似於問「哪一種方法,我可以創建一個表名爲‘A’與一些FK鏈接表‘B’數據庫的點?
謝謝!
爲什麼你的CountryBean是一個bean和一個託管屬性是否有特定的原因?我仍然在學習自己,但我認爲你不需要像字符串那樣對待他們。 – klog
國家是一個數據庫查找表,我需要的ID和名稱 – Gavi
我不理解爲什麼UserBean和CountryBean是JSF ManagedBean,..他們只是簡單的數據結構 –