0

次の JSF ページがあります。

<h:head>
    <title>Admin Page</title>        
</h:head>
<h:body>

    <h1>Users List</h1>

    <h:dataTable value="#{adminBean.linkArr}" var="o" >

        <h:column>
            <f:facet name="header">User name</f:facet>
            #{o.username}
        </h:column>

    </h:dataTable>        

</h:body>

そして、次のようなマネージド Bean:

@ManagedBean(name="adminBean")
@SessionScoped
public class AdminBean {

private static UserLink[] linkArr;

public AdminBean() {
    FacesContext context = FacesContext.getCurrentInstance();  
    HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();  
    HttpSession session = request.getSession();

    String values[] = (String[])request.getSession().getAttribute("userList");

    int userNos = values.length;
    linkArr = new UserLink[userNos];

    for(int i = 0; i < userNos; ++i) {
        String tmp = values[i];
        linkArr[i] = new UserLink(tmp);
    }                
}
public UserLink[] getLinkArr() {
    return linkArr;
}

public static class UserLink {

    public String username;

    public UserLink(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }
}
}

私が実際にやろうとしていることは次のとおりです。

セッションを作成して、以前に呼び出したサーブレットからいくつかのデータを保存します。関連する XHTML ファイルが呼び出されたときにのみマネージド セッション Bean が作成されると仮定すると、セッション オブジェクトから属性を取得し、それを使用して JSF テーブルに入力します。

ただし、JSF テーブルの代わりに、次の出力が得られます。

Users List

User name #{o.username}

マネージド セッション Bean のライフサイクルが間違っていると思い込んでいますか、それとも JSF ページに問題がありますか?

4

1 に答える 1

2

それで、ELはまったく評価されていませんか?これは、現在のリクエストURL(ブラウザのアドレスバーに表示されている)が、webappで設定されている<url-pattern>のと一致しなかったことを意味するだけです。つまり、XHTMLファイルをJSFコンポーネントツリーに解析し、すべてのEL式を評価して有効なHTMLコードを生成できるようにする役割を果たします。Webブラウザで[ソースの表示]を右クリックした場合は、次の点にも注意してください。すべてのJSFタグは、HTML表現が生成されるのではなく、解析されないままになります。FacesServletweb.xml

したがって、この問題を修正するには、現在のリクエストURLがfacesサーブレットのURLパターンと一致することを確認する必要があります。したがって、にマップしている場合は、ではなくで*.jsfページを開く必要があります。または、facesサーブレットのURLパターンをに変更するだけで、仮想URLについて心配する必要がなくなります。page.jsfpage.xhtmlweb.xml*.xhtml

この問題はセッション管理とは関係がないことに注意してください。奇妙なデザインを考えると、遅かれ早かれそれに関連する問題に遭遇するかもしれませんが、それは別の問題です。

参照:

于 2013-01-09T20:47:33.133 に答える