SE成長痛日記

アラサーSEが技術力を高めるために日々感じる痛みを綴るBlogです。

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;
    }

とりあえずこんな感じになりました。 体裁やクラス構造は気にしない!

f:id:hirohisoEx:20190303182805p:plain
結果

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にプッシュ

まずgithubリポジトリを作ります。

次に、netbeansでローカルリポジトリを作成します。

プロジェクトを右クリック 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を行います。 f:id:hirohisoEx:20190401234432p:plain

これでJava EEをプロジェクトから選択できるようになります。

次にAPサーバを追加します。

wildflyをインストールします。。。。 (決して、glass fish の追加に失敗したわけではない)

普通にサイトから落としたZIPを解凍、 server -> add で解凍したフォルダのパスを指定します。

f:id:hirohisoEx:20190401234529p:plain
サーバ追加後

その後、new projectでWEb Applicationが作成できるようになっているので、 Server にwildflyを選択してプロジェクトの作成をします。 f:id:hirohisoEx:20190401234619p:plain では試しに起動してみます。

実行ボタンを押下。

ビルド/デプロイは通ったみたいです。

特にブラウザ起動しないけど、立ち上がっているのでしょうか? まずは「http://localhost:18080」にアクセス。wildflyが立ち上がっていることを確認します。

http://localhost:18080/javaWebApplication-1.0-SNAPSHOT/」にアクセスすると。 Hello Worldが表示されており、無事WEBアプリケーションプロジェクトを作ることができたようです。

(2019/4/1)ちょっと写真などを貼り付けたり 説明を補足