[英]JSF - Why is the Instance of SessionScoped class not initialized?
我不會在selectOneMenue中顯示我的枚舉類[license]的值。
<h:selectOneMenu id="licenseclassmenue" >
<f:selectItem itemLabel="select license"/>
<f:selectItems value="#{licenseCodes.licenseCodes}"/>
</h:selectOneMenu><br />
我的licenseCode類:
/**
* convert enum to array of strings
*
* */
@ManagedBean(name = "licenseCodes" )
@SessionScoped
public class LicenseCodes {
public SelectItem[] getLicenseCodes() {
SelectItem[] licenses = new SelectItem[License.values().length];
int i = 0;
for (License l : License.values()) {
licenses[i++] = new SelectItem(l, l.name());
}
return licenses;
}
}
枚舉
public enum License {
A("A"),B("B"),C("C");
private String value;
private License(String v) {
this.value = v;
};
}
當我部署項目時,selectOneMenue中將沒有任何許可證。 在調試過程中,我注意到從未調用過getLicenseCodes()。
我在這里做錯了什么?
這是您的課程:
package so.question14163260;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.model.SelectItem;
@ManagedBean(name = "licenseCodes")
@SessionScoped
public class LicenseCodes {
private SelectItem[] licenses;
public LicenseCodes() {
System.out.println("================Inside===============");
}
@PostConstruct
public void init() {
SelectItem[] licenses = new SelectItem[License.values().length];
int i = 0;
for (License l : License.values()) {
licenses[i++] = new SelectItem(l, l.name());
}
setLicenses(licenses);
}
public SelectItem[] getLicenses() {
return licenses;
}
public void setLicenses(SelectItem[] licenses) {
this.licenses = licenses;
}
}
這是xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head></h:head>
<h:body>
<h:selectOneMenu id="licenseclassmenue" >
<f:selectItem itemLabel="select license"/>
<f:selectItems value="#{licenseCodes.licenses}"/>
</h:selectOneMenu>
</h:body>
</html>
這是屏幕截圖
如您所見,它正在工作。
我忘了在測試時添加@SessionScoped
批注。 現在添加后也可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.