JSFにマネージドビーンを追加する その3
前回作成したやつは、投稿ボタンを押下する度に、 文字列を付け足していくものでしたが、
見た目が悪いので、繰り返し構造を持つものに 修正したいと思います。
まず、情報の保持形式をまとも(投稿オブジェクトを作成、リストで保持するように変更)にします。
public class Response implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String _name; private String _mail; private String _body;
こんな感じの投稿クラスを作成し、
private String responseList; private final List<Response> _responseList = new ArrayList<>(); public void tweetResponse(){ this.responseList += this.name + this.EMail + this.Res; this._responseList.add(new Response(this.name,this.EMail,this.Res)); return; }
投稿ボタンがクリックされるたびに生成、リストに追加されるようにします。
次に、リスト内を繰り返して、 データを取得、表示するように変更します。
リストから要素を取得し、繰り返しHTMLを生成したいです。 ちょっと調べるとui:repeatってのがあるのでそれを使用してみます。
<h:outputText value="#{responseBean.responseList}"></h:outputText> <ui:repeat var="res" value="#{responseBean.responseList}" > <h:outputText value="#{res.name}"/> <h:outputText value="#{res.mail}"/> <h:outputText value="#{res.body}"/> </ui:repeat>
こんな感じですかね?
とりあえず実行します。
そーですか・・・ あ、もともとも作成していたString型のプロパティを要素に指定してしまってました。 そしてまたエラーorz
あれ、これui:repeatのvarもnameアノテーションで指定させて一致させないとだめなやつ? とりあえず修正したみたらうごきました 。。。。。。
でもどこにも、varはnameアノテーションのやつ指定しないとダメなんて、記載ないんだが・・・・
要調査です。
3/4追記 再度確認したら発生しなくなりました。謎・・・・