URL から view-parameter をチェックし、Bean の init-method を呼び出してそのユーザーを取得する Web ページを作成しました。そのページのフィールドには、そのユーザーの情報が入力されます。
しかし、何かがうまくいかない。
マイ Facelets ページ:
<?xml version='1.0' encoding='UTF-8' ?>
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Tweetpage of #{userBean.getName()}</title>
</h:head>
<h:body>
<f:metadata>
<f:viewParam name="user" value="#{userBean.name}" />
<f:event type="preRenderView" listener="#{userBean.init}" />
</f:metadata>
<h:commandButton value="Login" action="#{loginBean.login()}" id="login" />
<div class="namebox">
<label>User: #{userBean.name} </label> <br/>
<br/>
</div>
</h:body>
</html>
そして UserBean.java:
package beans;
import ...
@Named
@RequestScoped
public class UserBean implements Serializable {
private String userName;
private String name;
private String bio;
private String web;
private Collection<Tweet> tweets;
private Collection<User> followers;
private User user;
@Inject
private @Named(value = "kwetterService")
KwetterService service;
@PostConstruct
public void init(ComponentSystemEvent event) throws AbortProcessingException {
System.out.println(name);
user = service.find(name);
if (user != null)
{
name = user.getName();
bio = user.getBio();
web = user.getWeb();
tweets = user.getTweets();
followers = user.getFollowing();
}
}
}
が呼び出されていないためSystem.out.println(name)
、Web ページが init を呼び出しているとは思えません。URL 適応なしで Web ページを開始すると ( http://localhost:8080/KwetterJSF/
)、次のエラー メッセージが表示されます。
WELD-000049 beans.UserBean@3c836d3d で [メソッド] @PostConstruct public beans.UserBean.init(ComponentSystemEvent) を呼び出せません
パラメータ ( ) を追加するとhttp://localhost:8080/KwetterJSF/index.xhtml?user=Sjaak
、次のようになります。
User: #{userBean.name}
私はこれについてあまり経験がなく、自分で少し調べてもわかりません。誰かが解決策を知っていますか?