LookupDispatchActionで日本語のkeyを使う時

@IT会議室のJava Solution会議室で見付けました。
ボタンのバリューがascii文字以外だと、上手くreverse lookupができないようです。 どうやらエンコーディングの問題らしいのですが、RequestProcessorのサブクラスでprocessPreprocessメソッドをオーバーライドし、そこでエンコーディング処理をすれば問題解決のようです。


import org.apache.struts.action.RequestProcessor;
import javax.servlet.http.*;

public class MyRequestProcessor extends RequestProcessor{
public boolean processPreprocess(HttpServletRequest request,
HttpServletResponse response){
try{
request.setCharacterEncoding("Shift_JIS");
}catch(Exception e){
System.err.println("MyRequestProcessor#processPreprocess:"
+ " fail to setCharacterEncoding");
}
return true;
}
}

struts-config.xmlファイルのcontrollerタグを忘れずに。

<controller processorClass="MyRequestProcessor" />