我使用managedBean USERHOME在requestScope,在該實體「用戶」將是堅持。 用戶具有在多對一relation.My代碼映射領導列看起來像這樣JSF轉換器驗證錯誤:值無效selectOneMenu用於UIComponent
@ManagedBean
@RequestScoped
public class UserHome {
private User user = new User();
// Getters and Setters
private List<SelectItem> selectItems = new ArrayList<SelectItem>();
public UserHome() {
for(User user: availableLeaders) {
selectItems.add(new SelectItem(user.getName(), user));
}
}
public void persis();
}
User.java
public class User {
@Id
@Column
private Integer id;
@Column
privat String name;
@ManyToOne
private User leader;
}
我試圖通過h:selectOneMenu
這樣得到這個領導者的價值
<h:selectOneMenu value="#{userHome.user.leader}" converter="userConverter">
<f:selectItems value="#{userHome.selectItems}"/>
</h:selectOneMenu>
我的轉換器看起來像這樣
@FacesConverter(forClass = User.class, value="userConverter")
public class UserConverter implements Converter {
private Map<String, User> userValues = new HashMap<String, User>();
public UserConverter() {
init();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
return userValues.get(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
System.out.println("RAJASEKARAN "+value);
return ((User)value).getName();
}
public void init() {
UserHome userHome = new UserHome();
for(User user:userHome.availableLeaders()) {
userValues.put(user.getName(), user);
}
}
}
雖然試圖挽救我收到錯誤USEREDIT用戶:j_idt18:驗證錯誤:值無效
嗨,它在mojarra代碼中的確切位置,這就等於檢查發生了。我正在編寫一個自定義組件,並且遇到了這個問題,我想調試mojarra代碼以查看正在發生的事情。謝謝 –
這發生在'UISelectMany#validateValue'中,實際調用'SelectUtils#matchValue'中發生的'equals'。 –
是的,經過大量的調試,我能夠弄清楚這是否認爲這是一個不好的做法不驗證?我的自定義組件從UISelectOne擴展而來,並且這個方法的validateValue給了我很多的傷感,如果我用這個空的內容描述這個方法,那麼事情就會正常工作。但我有一種感覺,這是我不應該做的。任何想法? –