ログインが休止状態を介してデータベース(postgresql)に保存されるjsf 2.1のアプリケーションがあります。私のアプリケーションはSpringで作成され、Spring Securityを使用して正常にログインできます:
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="customUserDetailsService">
<password-encoder ref="passwordEncoder" />
</authentication-provider>
</authentication-manager>
問題は、アプリケーションにログインしているユーザーに関する情報を表示したい場合です。jsf では、EL (式言語) を介して名前を表示できます。
#{request.userPrincipal.name}
しかし、データベース内の他の情報ストアを表示したいので、休止状態の方法を使用します:
public Users getUser(String login) {
List<Users> userList = new ArrayList<Users>();
Query query = openSession().createQuery("from Users u where u.login = :login");
query.setParameter("login", login);
userList = query.list();
if (userList.size() > 0)
return userList.get(0);
else
return null;
}
そして、私はこのshowUserのようにjsf Beanを介してこれを呼び出します:
@Component
@Scope("session")
public class UsersBean {
private String login;
private String name_user;
private String pass;
private HabilitacionVehicular_InscripcionFacade habilitacionVehicular_InscripcionFacade;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getName_user() {
return name_user;
}
public void setName_user(String name_user) {
this.name_user = name_user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public Users showUser(String login) throws DataAccessException, EntityNotFoundException{
return habilitacionVehicular_InscripcionFacade.getUser(login);
}
しかし、私はそれをアプリケーションに表示することはできません
<h:dataTable value="#{usersBean.showvUser()}" var="c"
styleClass="order-table" headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row">
<h:column>
<f:facet name="header">
Customer ID
</f:facet>
#{c.login}
</h:column>
これは私にエラーを与えます:
Error: /WEB-INF/flows/main/main.xhtml @24,58 value="#{usersBean.showvUser()}": Method showvUser not found
そして、これはELとメソッドを組み合わせると:
Error: /WEB-INF/flows/main/main.xhtml @24,58 value="#{usersBean.showvUser(#{request.userPrincipal.name})}" Failed to parse the expression [#{usersBean.showvUser(#{request.userPrincipal.name})}]