ニコニコカレンダー (1.0.3) | 2013-07-09 11:46 |
ニコニコフレームワーク (0.0.2) | 2009-08-08 17:10 |
アクションはjp.sf.nikonikofw.action.IActionインターフェースを実装して作成します。
public class HelloAction implements IAction { @Override public String execute(HttpServletRequest requesr, HttpServletResponse response){ request.setAttribute("message", "Hello World!"); return "hello.jsp"; } }
execute()メソッドの戻り値にはフォワードするJSPを指定します。リダイレクトで別のアクションに遷移する場合はアクション内でresponse.sendRedirect()を呼び出した後、nullを返却します。
アクションにpublicフィールドを用意し、@Requestアノテーションをつけておくとフィールド名に一致するリクエストパラメータを受け取ることができます。フィールド名とリクエストパラメータの名前が異なる場合は受け取るパラメータ名を明示的に指定することもできます。
// フィールド名と同じパラメータを受け取る @Request public String userName; // パラメータ名を明示的に指定して受け取る @Request(name="id") public Long userId
同じパラメータ名で複数のパラメータが送信される場合はString配列のフィールドで受け取ることができます。
// 複数のパラメータを受け取る @Request public String[] selectedValues;
@Requestのrequired属性をtrueにしておくと、パラメータの必須チェックを行うことができます。必須のフィールドに対応するパラメータが存在しないか、空文字列の場合はValidationExceptionがスローされます。
// 必須パラメータ @Request(required=true) public Long userId
アクションクラスに@Authenticationアノテーションを付与することで、アクションの認証チェックを行うことができます。
@Authenticationを付与したアクションはログイン状態の場合のみアクセスすることができます。
// ログイン中のみアクセス可能 @Authentication public class AdminOnlyAction implements IAction { ... }
また、@Authenticationのadmin属性をtrueにすると管理者の場合のみアクセスすることができます。
// 管理者の場合のみアクセス可能 @Authentication(admin=true) public class AdminOnlyAction implements IAction { ... }
認証に失敗するとAuthenticationExceptionがスローされます。
ログインやログアウト処理を行うにはIAuthenticationManangerを使用します(ただし、Google App Engineの場合はGoogle App Engineで提供されているGoogleアカウント認証用ページにてログイン・ログアウト処理を行うため、以下の処理を行う必要はありません)。
IAuthenticationMananger manager = Config.getAuthenticationMananger(); // ログイン処理 UserInfo userInfo = new UserInfo(); manager.login(userInfo); // ログアウト処理 manager.logout();
アクションからフォワードされるJSPは普通のJSPとして作成します。ELやJSTLなどを活用するとよいでしょう。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://nikonikofw.sf.net/f" prefix="f" %> <html> <head><title>テスト</title></head> <body> <h1>${f:h(message)}</h1> <c:if test="${f:isLogin()}"> ログイン中 </c:if> </body> </html>
JSPではニコニコフレームワークが提供するEL関数を使用することができます。利用可能なEL関数は以下の通りです。
関数 | 説明 |
f:h() | 文字列のHTMLタグをエスケープします。 |
f:br() | 文字列の改行を<br>タグに変換します。 |
f:link() | 文字列に含まれるURLをリンクに変換します。 |
f:js() | JavaScriptの文字列リテラルをエスケープします。 |
f:isLogin() | ログインしている場合にtrue、していない場合にfalseを返します。 |
f:isAdmin() | ログインしていて管理者であればtrue、ログインしていないか管理者でない場合はfalseを返します。 |