Home > しらべる > SAStruts + JSONIC でバリデーションエラーをJSONで返す(バリデータ編)

SAStruts + JSONIC でバリデーションエラーをJSONで返す(バリデータ編)

  • Posted by: memorycraft
  • 2008年11月23日 12:44
  • しらべる

前回の記事は検証メソッドをつかったものでしたが、今回はアノテーションを使ったバリデータによる検証でのやり方をやってみました。


@Execute(validator = false)
public String jsonError() throws IOException{

	HttpServletRequest request = RequestUtil.getRequest();
        HttpSession session = request.getSession();

        Object msgRequest = request.getAttribute(Globals.ERROR_KEY);
        Object msgSession = session.getAttribute(Globals.ERROR_KEY);
        
        ResourceBundle resource = ResourceBundle.getBundle("application");
        
        Map<String, String> result = new HashMap<String, String>();
        if(msgRequest != null){
        	for (Iterator iter = ((ActionMessages)msgRequest).get(); iter.hasNext(); ) {
        		ActionMessage msg = (ActionMessage) iter.next();
        		String text = (String)resource.getString(msg.getKey());
        		result.put("msg", MessageFormat.format(text, msg.getValues()));
        	}
        }
        else{
        	for (Iterator iter = ((ActionMessages)msgSession).get(); iter.hasNext(); ) {
        		ActionMessage msg = (ActionMessage) iter.next();
        		String text = (String)resource.getString(msg.getKey());
        		result.put("msg", MessageFormat.format(text, msg.getValues()));
        	}
        }
		
	this.response.setContentType("text/javascript");
	this.response.setCharacterEncoding("UTF-8");
	this.response.getWriter().write(JSON.encode(result));
		
	return null;
}

これだと、プロパティファイルのプレースホルダの置換も大丈夫っぽいです。

Trackbacks:0

TrackBack URL for this entry
http://www.memorycraft.jp/mt-tb.cgi/85
Listed below are links to weblogs that reference
SAStruts + JSONIC でバリデーションエラーをJSONで返す(バリデータ編) from メモリークラフト

Comments:0

Comment Form

Home > しらべる > SAStruts + JSONIC でバリデーションエラーをJSONで返す(バリデータ編)

ページの先頭へ戻る