サポート > Wagby Developer Network > カスタマイズ事例 > 画面下部のログオンユーザ部の表示をログオンアカウントから、氏名に変更する。
準備
Wagby のログオンアカウント情報には、「氏名」に相当する項目が用意されていません。 そこで、はじめにログオンアカウントを主キーとする「スタッフ」モデルを用意します。 (必ずしも「スタッフ」という名前でなくとも大丈夫です。)
- 「スタッフ」モデルの主キーと、「氏名」項目を用意します。
- 主キーは "juser" というモデルを参照させます。これは Wagby が独自に管理するモデルです。
- 主キーの詳細項目定義で、"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" キーに変更します。



