1

現在、このコードを使用して"csrfPreventionSalt"、Struts2 の Interceptor のパラメーターの値を取得しています。

誰でもその値を取得する直接的な方法を教えてください...

public String intercept(ActionInvocation invocation) throws Exception {
    final ActionContext context=invocation.getInvocationContext();
    HttpServletRequest httpReq = ServletActionContext.getRequest();
    String salt ="";

    Map<String, Object> params = (Map<String, Object>)ActionContext.getContext().getParameters();
    Iterator<Entry<String, Object>> it = (Iterator<Entry<String, Object>>)params.entrySet().iterator();
    while(it.hasNext()) {
        Entry<String, Object> entry = it.next();
        if(entry.getKey().equals("csrfPreventionSalt"))
        {
        Object obj = entry.getValue();
        if (obj instanceof String[]){
            String[] strArray = (String[]) obj;
            if (strArray!=null) {
                 salt = strArray[0];
            }
        }
    }
}
4

1 に答える 1

0

パラメーターがインターセプターではなく、アクションに送信されたとします。アクションが呼び出されると、アクション コンテキストが作成され、リクエストからのパラメーターがアクション コンテキストにコピーされます。経由でパラメータを取得できます

public String intercept(ActionInvocation invocation) throws Exception {
    final ActionContext context = invocation.getInvocationContext(); 
    Map<String, Object> parameters = context.getParameters();
    String[] values = (String[]) parameters.get("csrfPreventionSalt");
    String salt = values[0];
    ...
于 2016-02-15T19:27:48.323 に答える