【发布时间】:2020-09-24 15:09:44
【问题描述】:
我是struts2的新手。
在拦截器中,如何更改表单字段的值,然后将其提交到数据库?
例如,当用户在表单中输入 firstName 值时,当它提交时我想更改 firstName 然后将其提交到数据库。
这是我的拦截器的代码
public class TestInterceptor extends AbstractInterceptor implements Interceptor
{
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception
{
ValueStack stack = actionInvocation.getStack();
Map<String, Object> params = ActionContext.getContext().getParameters();
Set<String> keys = params.keySet();
System.out.println(keys + " " + stack.size());
/*
* for (String key : keys)
* {
* String[] value = (String[]) params.get(key);
* System.out.println(value.length + " , " + value[0]);
* }
*/
Map<String, Object> context = new HashMap<String, Object>();
context.put("firstNames", "Changed");
context.put("firstName", "Changed");
stack.setParameter("firstName", "Changeds");
stack.push(context);
String result = actionInvocation.invoke();
return result;
}
}
【问题讨论】:
-
在我的情况下它不起作用...值没有更新
-
我得到了答案,在我的代码中,我只需要更改每个循环的值。无需添加任何其他上下文
-
是错字吗?或者,如果您解决了真正的问题,您可以添加答案。
-
为什么要在拦截器中这样做?行动似乎是一个更好的地方。
标签: java parameters struts2 struts2-interceptors