0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java】プロパティの値が画面に表示されない(JSF)

Last updated at Posted at 2023-12-26

はじめに

JSFで初歩的な動きを確認しようとしたところ、Managed Beanのプロパティをバインドして表示してくれない事象が発生。解決方法をメモ。

:arrow_down: 要は#{}を使って画面に「Hello!」と表示したいのに、表示されない。

index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <head>
        <title>FirstPage</title>
    </head>
    <f:view>
        #{myBean.message}
    </f:view>
</html>
MyBean.java
package mypkg;

import jakarta.inject.Named;
import jakarta.enterprise.context.RequestScoped;

@Named
@RequestScoped
public class MyBean {

    private String message = "Hello!";

    public MyBean(String message){
        this.message = message;
    }

    /* ゲッタ */
    public String getMessage(){
        return this.message;
    }

    /* セッタ */
    public void setMessage(String message) {
        this.message = message;
    }

    /* リスナ */
    public String getIdForNextPage(){
        return "success";
    }

}

解決策

引数なしのコンストラクタを作成する。

MyBean.java
package mypkg;

import jakarta.inject.Named;
import jakarta.enterprise.context.RequestScoped;

@Named
@RequestScoped
public class MyBean {

    private String message;

    /* 引数なしのコンストラクタ */
    public MyBean(){
        this.message = "Hello!";
    }

    /* ゲッタ */
    public String getMessage(){
        return this.message;
    }

    /* セッタ */
    public void setMessage(String message) {
        this.message = message;
    }

    /* リスナ */
    public String getIdForNextPage(){
        return "success";
    }

}

めでたしめでたし。

ちなみに

引数なしのコンストラクタ作成前のコードで、Managed Beanにリスナを設定してもアクションがうまく機能せずにTarget Unreachable, identifier 'hoge' resolved to nullが出てしまってました。
こちらも引数なしコンストラクタの作成で解決しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?