Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

リソースファイルについてです

画面のヘルプを表示するHelpタグというものを作成しました。
機能は、JSPで取得した画面IDを引数にし、その画面のヘルプ画面にリンクした「Help」という文字を表示させるというものです。

画面のヘルプ画面はHTMで作成し、会社で決められた場所に配置しており、その情報はリソースファイルに
「画面ID=配置場所/画面ID.htm」と記載しております。
さらに、ヘルプ画面は日本語版と英語版とを用意しており、リソースファイルも日本語HTM用と英語HTM用と用意しています。

リソースファイルを読みに行き、リンクしたHelpという文字は表示出来たのですが、言語情報によりリソースファイルの振り分けができません。
Actionでの言語情報取得方法はわかるのですが、今回はタグですのでActionを継承するわけにはいかないのです。

どなたかタグで言語情報を取得する方法を教えてください。宜しくお願いします。

Helpタグ
package jp.co.suzuki.ibom.taglib;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

import jp.co.suzuki.ibom.util.IBOMRequestUtil;

/**
 * <pre>
 * Help
 * 画面のヘルプ用のPDFを出力する.
 * This is tag class that outputs PDF for help of the screen. 
 * </pre>
 * 
 * @author  Y.Narishima,SUZUKI Japan
 * @version  2.0.0
 */
public class IBOMHelp extends TagSupport {
    
    /**
     * 
     */
  private PageContext pageContext;
  private Tag parentTag;
  private String screen;

  //   setPageContextメソッド、setParentメソッド、getParentメソッドはほぼ決まりきった記述。
  //   特別な処理の行わない場合は、この記述を行う。
  //   setPageContextMethod,setParentMethod,getParentMethod are an almost usual description.
  //   When Special processing is not done, this description is done.

    /**
     * <pre>
     * Setter of pageContext.
     * </pre>
     * 
     * @param pageContext
     */
  public void setPageContext(PageContext pageContext) {
    this.pageContext = pageContext;
  }
    /**
     * <pre>
     * Setter of parent.
     * </pre>
     * 
     * @param parentTag
     */
  public void setParent(Tag parentTag) {
    this.parentTag = parentTag;
  }
    /**
     * <pre>
     * Getter of parent
     * </pre>
     * 
     * @return Tag parentTag
     */
  public Tag getParent() {
    return this.parentTag;
  }


    /**
     * <pre>
     * Setter of screen.
     * 属性に指定された値を保存するsetメソッド。
     * setMethod that preserves value specified for attribute.
     * </pre>
     * 
     * @param String screen
     */
  public void setScreen(String screen) {
        this.screen = screen;
  }
 
    /**
     * <pre>
     * @see javax.servlet.jsp.tagext.Tag#doStartTag()
     * null == helpUrl || "".equals(helpUrl)の場合SKIP_BODY
     * 上記以外ならEVAL_BODY_INCLUDE
     * SKIP_BODY in case of null == helpUrl || "".equals(helpUrl)
     * It is EVAL_BODY_INCLUDE if other
     * </pre>
     * 
     * @param String helpUrl
     * @param PageContext pageContext
     * @param String screen
     * @return EVAL_BODY_INCLUDE
     * @return SKIP_BODY
     */
  public int doStartTag() throws JspException {
      String helpUrl = IBOMRequestUtil.getResourcesValue(pageContext,"help",screen);
      if (null == helpUrl || "".equals(helpUrl)) {
          return SKIP_BODY;
      }
    return EVAL_BODY_INCLUDE;
  }
  
    /**
     * <pre>
     * @see javax.servlet.jsp.tagext.Tag#doEndTag()
     * null == helpUrl || "".equals(helpUrl)の場合SKIP_BODY
     * 上記以外ならEVAL_PAGE
     * SKIP_BODY in case of null == helpUrl || "".equals(helpUrl)
     * It is EVAL_PAGE if other
     * </pre>
     * 
     * @param String helpUrl
     * @param PageContext pageContext
     * @param String screen
     * @throws Exception
     * @return EVAL_PAGE
     * @return SKIP_BODY
     */
  public int doEndTag() throws JspException {
      try {
          JspWriter out = pageContext.getOut();
          String helpUrl = IBOMRequestUtil.getResourcesValue(pageContext,"help",screen);
          if (null == helpUrl || "".equals(helpUrl)) {
              return SKIP_BODY;
          }else
              out.println("<a href=\"javascript:void(0);\" onclick='newBusWin(\""+IBOMRequestUtil.getResourcesValue(pageContext,"help",screen) +"\")'>" + "Help" + "</a>");
        } catch(Exception e) {
          throw new JspException(e.getMessage());
        }
    return EVAL_PAGE;
  }

  /**
     * <pre>
     * タグハンドラクラスのオブジェクトが不要と判断されたときに実行されるメソッド
     * It is executed when judged that Object of Tag handler class is unnecessary.
     * </pre>
     */
    public void release() {}
}

自分で作成したメソッド
/**
     * @param request
     * @param key
     * @return
     */
    public static String getResourcesValue(PageContext pageContext, String propetiesId,String key) {

        String value = null;
        ServletContext context = pageContext.getServletContext();
        HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
        ModuleConfig moduleConfig = ModuleUtils.getInstance().getModuleConfig(request, context);

        MessageResources messageResources = (MessageResources) context.getAttribute(propetiesId + moduleConfig.getPrefix());
        if(null != messageResources){
            value = messageResources.getMessage(key);        
        }
        return value;
    }

}

6

回答

79408

閲覧

6件の回答

評価

0

お願いします。
誰か助けてください。。

評価

0

request.getCharacterEncoding()

評価

0

↑だとUTF-8とかきちゃうので・・・
request.getLocale()

評価

0

request.getLocale(); ???
bundle = .....;
全然関係なかったらゴメンナサイ!

評価

0

情報漏えいじゃ?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。