サポート > Wagby Developer Network > カスタマイズ事例 > 画面下部のログオンユーザ部の表示をログオンアカウントから、氏名に変更する。

ログオンユーザ部

Wagby におけるログオンユーザ部は標準で、ログオンアカウントが表示されるようになっています。 今回はこの部分に、「氏名」を表示させるカスタマイズを行います。

準備

Wagby のログオンアカウント情報には、「氏名」に相当する項目が用意されていません。 そこで、はじめにログオンアカウントを主キーとする「スタッフ」モデルを用意します。 (必ずしも「スタッフ」という名前でなくとも大丈夫です。)

  1. 「スタッフ」モデルの主キーと、「氏名」項目を用意します。

    図1 スタッフモデルの主キー定義
  2. 主キーは "juser" というモデルを参照させます。これは Wagby が独自に管理するモデルです。

    図2 juser モデルの参照
  3. 主キーの詳細項目定義で、"juser" モデルとの関連付けを行います。

    図3 juser モデルとの関連付け

juser モデルの項目については、Wagby 定義ファイル マニュアル「ログオンアカウント情報を利用する」もあわせてご覧下さい。

カスタマイズ方法

MyLogonAction クラスの修正

$(DEVHOME)\env\work\srcgen 以下に自動生成される MyLogonAction.java は、ログオン後に呼び出されるフックメソッドが用意されています。 今回は、ログオン成功時に呼び出される successLogin メソッドをカスタマイズします。

...
// 追加した import 文
import org.hibernate.*;
import jp.jasminesoft.jfc.app.HibernateUtil;
import jp.jasminesoft.wagby.model.staff.*; // 上で用意したモデル

public class MyLogonAction extends LogonAction
{
...(中略)...
    @Override
    public void successLogin(HttpServletRequest request,
                             String username, Jfcerrors errors)
    {
	Staff staff = null;
        org.hibernate.Session session =
            HibernateUtil.getCurrentSession();
        try {
            StringBuilder sb = new StringBuilder();
            sb.append("select c from Staff as c");
            sb.append(" where c.userid_ = :userid_");
            String expression = sb.toString();
            Query query = session.createQuery(expression);
            query.setString("userid_", username);

            staff = (Staff)query.uniqueResult();
            if (staff != null) {
                staff = new Staff(staff.makeDocument());
            }
        } catch (Exception e) {
	    logger.error(
                "Faild to get staff object, userid is "+username);
	} finally {
            session.close();
	}

	HttpSession httpSession = request.getSession();
	if (staff != null) {
	    String name = staff.getName();
	    httpSession.setAttribute("__jfc_staffname", name);
	} else {
	    httpSession.setAttribute("__jfc_staffname", username);
	}
    }
  ...
}

  • successLogin メソッド内では DbActionParameter クラスのインスタンスが用意されていません。ですので、この例ではプロセスビーンを呼び出すのではなく、直接 Hibernate をアクセスしています。
  • 取得した "氏名" の情報を、HttpSession に保存しています。キー名 "__jfc_staffname" は任意に決めてください。

変更したファイルを $(DEVHOME)\customize\webpage\WEB-INF\src\jp\jasminesoft\wagby\struts フォルダに保存します。

logonuserinfo.jsp ファイルの変更

予め用意されている $(DEVHOME)\env\template\jspc\logonuserinfo.jsp ファイルを、$(DEVHOME)\customize\webpage\parts\logonuserinfo.jsp として保存します。その後、同ファイルを次のように変更します。

<%@ page pageEncoding="UTF-8"%>
<div class="logonuserinfo">
<fmt:setBundle basename="jfcapp"/>
<fmt:message key="__jfc_common.logon.message">
  <fmt:param value="${__jfc_staffname}"/>
</fmt:message>
</div>

  • MyLogonAction クラスで指定した "__jfc_staffname" キーに変更します。

ビルド

上記ファイルを変更後、Wagby ビルダを起動し、ビルド処理を行ってください。

このページ

カスタマイズ事例