이 프로젝트는 Primefaces 3.5, JSF 2.0, Oracle 데이터베이스로 작성되었습니다.로그인 후 데이터베이스의 데이터로 selectOneMenu 채우기
먼저 사용자가 로그인해야합니다. 로그인 후 "Agenda"로 리디렉션됩니다. 이 페이지는. 로그인 된 사용자에 따라 데이터로 가득받을 필요가 selectOneMenu을 포함
Login.xhtml
<p:inputText style="text-transform: uppercase" value="#{loginBean.username}"
id="username" required="true" label="username" />
<h:outputLabel for="password" value="Password: " />
<h:inputSecret value="#{loginBean.password}"
id="password" required="true" label="password" />
내 LoginBean.java
sets and get my userId which i need to identify my user
also handles my loginrequest.
의제. XHTML
<p:selectOneMenu value="#{orResourcesBean.orResource}" converter="resourcesConverter" var="orResource"
style="width:250px" filter="true" filterMatchMode="startsWith">
<f:selectItem itemLabel="Select Resource" itemValue="" />
<f:selectItems value="#{orResourcesBean.orResources}" var="orResource" itemLabel="#{orResource.RLname} #{orResource.RFname}"
itemValue="#{orResource}" />
<p:column>
#{orResource.RLname}
</p:column>
<p:column>
#{orResource.RFname}
</p:column>
</p:selectOneMenu>
OrResourcesbean.java
@ManagedBean(name="orResourcesBean")
@SessionScoped
public class OrResourcesBean implements Serializable {
private OrResources orResource;
private List<OrResources> orResources;
public void setOrResource(OrResources orResource)
{
this.orResource = orResource;
}
public OrResources getOrResource() {
return orResource;
}
public List<OrResources> getOrResources() {
orResources = ResourcesConverter.resources;
return orResources;
}
}
ResourcesConverter.java
public static List<OrResources> resources;
static OrResourcesDao orResourceDao = new OrResourcesDaoImpl();
public Integer uKey;
{
LoginBean loginBean = (LoginBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("loginBean");
if (loginBean != null) {
uKey = loginBean.getUKey();
if (uKey == null) {
resources = null;
} else {
resources = orResourceDao.getOrResourcesById(uKey);
}
} else {
resources = null;
}
}
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
if (submittedValue.trim().equals("")) {
return null;
} else {
try {
String number = submittedValue;
for (OrResources orR : resources) {
if (orR.getRCode().equals(number)) {
return orR;
}
}
} catch(NumberFormatException exception) {
throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid resource"));
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value == null || value.equals("")) {
return "";
} else {
return String.valueOf(((OrResources) value).getRCode());
}
}
그래서 당신은 내 Agenda.xhtml에서 selectOneMenu가 모든 자원으로 가득 볼 수 업데이트] WORKING 기능, 지금은해야 로그인 한 사용자가 사용할 수있는 리소스로만 채우십시오. 내 문제는 내가 어디에서나 매개 변수를 가져올 수 없기 때문에 내 제멋대로 메서드를 만들 수 있습니다.
정적이 아닌 변수를 static (innit) 메서드에 넣지 않겠습니다.
하지만 어떻게이 문제를 해결할 수 있습니까?