JSFにマネージドビーンを追加する その2
前回、作成してうまく動かなった部分ですが、 単純にアノテーションのimportがまちがっており、修正したら正しく動作しました。
では今回は、「投稿」ボタンを押下したら、 レスが上に表示されるような仕組みを作成します。
細かい体裁やクラス構造はいったん無視します。 リクエスト送って、再度表示ができるとこまでです。
XHTMLはいかのように修正
<h:body> <h:outputText value="#{responseBean.responseList}"></h:outputText> <h:form> <h:outputLabel>名前</h:outputLabel> <h:inputText value="#{responseBean.name}" p:placeholder="#{responseBean.defaultName}"></h:inputText> <h:outputLabel>e-mail</h:outputLabel> <h:inputText value="#{responseBean.EMail}" p:placeholder="#{responseBean.defaultEMail}"></h:inputText> <div> <h:inputTextarea cols="50" rows="10" value="#{responseBean.res}"></h:inputTextarea> </div> <h:commandButton action="#{responseBean.tweetResponse()}" value="投稿"></h:commandButton> </h:form> </h:body>
管理beanはボタン押下時のメソッドを作成します。
public void tweetResponse(){ this.responseList += this.name + this.EMail + this.Res; return; }
とりあえずこんな感じになりました。 体裁やクラス構造は気にしない!
JSFにマネージドビーンを追加する
前回作成したJSFにマネージドビーン(管理Bean)を紐付けてみます。
まず初期表示時に、管理Beanの指定する文字列を各テキストエリアのプレースホルダとして表示するように してみたいと思います。
投稿管理ということで、ResponseBeanとし、 定数文字列を追加し、JSFに関連付けてみます。。
ところでJSFでplaceholdertってどうやって指定するのでしょうか・・・・・
なんか以下のサイトを見るに、パススルーアトリビュートってやつを使用するみたいです。 https://ittoybox.com/archives/175
とりあえずこれで一回動かしてみます。
うん。なんかエラー出た。
Bean declaring a passivating scope must be passivation capable
このページを見ると、シリアライズ インターフェースを実装すればよいっぽい https://sites.google.com/site/javar4java/contexts-and-dependency-injection-cdi/scope
エラーにはならなくなったが、値が出ないorz 初期表示から管理Beanで値を設定することってできないんでしょうかね?
ちょっと調べが必要です。
定数にしたのがわるいのか? プロパティにしてPostConstructで設定。
でない。
getterの戻りをべた書きで設定。でない。
JSFにべた書き。これは出ました。
管理Beanの値をとれてないってことがわかったので、後日もうちょっと調べていきたいと思いまあす。
JSFでWEBページを作成する その3
前回作成したJSFページをいじって 入力フォームを備えたページにしてみます。
某掲示板ぱくって名前とメアドと投稿内容を指定できるformを作成してみました。
で、出力されたHTMLは以下みたいな感じです。
<html xmlns="http://www.w3.org/1999/xhtml"><head id="j_idt2"> <title>Facelet Title</title></head><body> <form name="j_idt5" id="j_idt5" action="/javaWebApplication-1.0-SNAPSHOT/faces/sample.xhtml" enctype="application/x-www-form-urlencoded" method="post"> <input name="j_idt5" type="hidden" value="j_idt5"> <label>名前</label><input name="j_idt5:j_idt8" type="text"><label>e-mail</label><input name="j_idt5:j_idt11" type="text"> <div><textarea name="j_idt5:j_idt13" rows="10" cols="50"></textarea> </div><input name="javax.faces.ViewState" id="j_id1:javax.faces.ViewState:0" type="hidden" value="2296767451131191362:61443582680465282" autocomplete="off"> </form> </body></html>
JSFでWEBページを作成する その2
前回JSFでページ作ったときに、追加されたweb.xmlを見ていたのですが、 ひとつ重要なことを見逃してました。
<servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping>
JSFのサーブレットを動作させるURLのパターンは/faces/*です。
/faces含んでないとサーブレット動きません。
ということで、faces含みのURLで動作させると、今度こそ動きました。 http://localhost:18080/javaWebApplication-1.0-SNAPSHOT/faces/sample.xhtml
JSFでWEBページを作成する
前回作成したからのWEBアプリケーションプロジェクトにJSFでWEBページを作成したいと思います。
WEBページフォルダを右クリックして、JSFページを選択して、ファイル名「Sample」と入力し、 finishを押下します。
この状態で一度実行してみます。
http://localhost:18080/javaWebApplication-1.0-SNAPSHOT/sample.xhtml
「Hello from Facelets」と表示され、JSFの追加ができました。
netbeansを使用してgithubのリポジトリにプロジェクトを登録する
前回作成したWEBアプリケーションプロジェクトをgithubのリポジトリとして登録します
参考にしたサイト qiita.com
大きな流れは以下。
githubにリポジトリ作成 netbeansでプロジェクトのローカルgitリポジトリを作成してコミット ローカルリポジトリをgithubにプッシュ
プロジェクトを右クリック Versioninng → initialize git repositoryで作成
次にgit → commitでファイルをコミットします。 これでローカルリポジトリに変更が反映されました。
最後に、ローカルの内容をリモートにプッシュします。
git -> remote -> pushを選択します。 その後、画面の表示に従って、finishを押下。
無事,githubに登録されました。 github.com
Apache NetBeans10.0でwebアプリケーションプロジェクトを作る その2
前回、起動ボタンが出ていなかったので調べました。
どうやらApache netbeansでは、Java EEが同梱されていないみたいです。
英語のサイトを参考に、Java EEを使えるように設定しました。
Java EE/Jakarta EE Support for NetBeans 9 - DZone Java
まず、tools->pluginから、settingを開きます。 次に「add」を押下し、次のサイトを追加します。 「NetBeans 8.2 Plugin Portal」 「http://updates.netbeans.org/netbeans/updates/8.2/uc/final/distribution/catalog.xml.gz」
その後、「available plugin」へ移動し、「java ee base」を選択、installを行います。
これでJava EEをプロジェクトから選択できるようになります。
次にAPサーバを追加します。
wildflyをインストールします。。。。 (決して、glass fish の追加に失敗したわけではない)
普通にサイトから落としたZIPを解凍、 server -> add で解凍したフォルダのパスを指定します。
その後、new projectでWEb Applicationが作成できるようになっているので、 Server にwildflyを選択してプロジェクトの作成をします。 では試しに起動してみます。
実行ボタンを押下。
ビルド/デプロイは通ったみたいです。
特にブラウザ起動しないけど、立ち上がっているのでしょうか? まずは「http://localhost:18080」にアクセス。wildflyが立ち上がっていることを確認します。
「http://localhost:18080/javaWebApplication-1.0-SNAPSHOT/」にアクセスすると。 Hello Worldが表示されており、無事WEBアプリケーションプロジェクトを作ることができたようです。
(2019/4/1)ちょっと写真などを貼り付けたり 説明を補足