2017-08-24 20 views
0

私はこのような管理Beanを持っている:JSF ManagedBeanサイズ制限

@ManagedBean 
@ViewScoped 
public class bean implements Serializable { 
    private List<Project> projectList = new ArrayList<Project>(); 
    @PostConstruct 
    private void init() { 
     projectList = projectManager.getActiveProjects(); 
    } 
    public void save() { 
     //save 
    } 
} 

私はXHTMLページからsaveメソッドを呼び出すときに問題があります。 私は単純にsaveメソッドに入り、タスクを実行することを期待しました。残念ながら、それはinitメソッドに入るだけで、決してsaveには入りません。

projectListリストから問題があるようです。プロジェクトをリストに保存しないと、すべて正常に動作します。私はそれが動作するサーバーに値を設定した場合

はまた、私は、web.xml

<param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
<param-value>client</param-value> 

にこの設定を持っているが、私はそれを行うことができるかどうかはわかりません。 私の質問は次のとおりです:jsf managedbeanの最大サイズは?はいの場合、「より大きい」配列リストを格納する必要がある場合、私は何ができますか? STATE_SAVING_METHODをサーバーに設定するのは良い解決策ですか?

+0

_Itは、問題がprojectListリストからあるようです。プロジェクトをリストに保存しないと、すべて正常に動作します._なぜ、長さ**が原因だと思いますか?問題を示すために[mcve]を作成してください(http://www.stackoverflow.com/tags/jsf/infoも参照してください)。あなたの質問はhttp://xyproblem.infoかもしれませんし、[mcve]を作成する過程で本当の原因が分かるかもしれません。 – Kukeltje

答えて

0

STATE_SAVING_METHODは、コンポーネントのステータスが保存される場所を指定します。 'server'を使用すると、JSFコンテナはサーバのメモリにコンポーネントのステータスを保持し、クライアントはコンポーネントのステータスを尋ねられません。 JSFコンテナがクライアントにコンポーネントステータスを保存するという 'クライアント'を使用する場合、サーバーメモリは必要ありませんが、クライアントは毎回コンポーネントステータスを送信する必要があり、帯域幅が増加します。

あなたのケースでは、問題は変換エラー(「プロジェクト」リストを送信している)になる可能性があります。

開発モードを使用して、メッセージのために隠れていることがあり、エラーを発見する:

<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
</context-param> 
関連する問題