Решил проблему, написав интерсептор:
| Код | package com.vc.vacancies.controller;
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import java.util.Iterator; import java.util.Map;
/** * Класс, описывающий перехватчик данных запроса, осуществляющий замену пустых строк на null. * <p/> * Date: 20.02.2010<br /> * Time: 21:41:29<br /> * * @author maxpayne * @version 1.0 */ public class EmptyStringsInterceptor extends AbstractInterceptor { /** * Метод проверяет все значения, переданные в запросе, и удаляет из запроса те из них, которые являются * пустыми строками или строками, состоящими только из пробельных символов. * * @param invocation Оъект-"вызов" экшна. * @return Результат "вызова" экшна. * @throws Exception Если произошла исключительная ситуация, не предусмотренная данным перехватчиком. */ @Override public String intercept(ActionInvocation invocation) throws Exception { ActionContext ac = invocation.getInvocationContext();
//Берем параметры Map<String, Object> paramMap = ac.getParameters(); for (Iterator<String> it = paramMap.keySet().iterator(); it.hasNext();) { String paramKey = it.next(); Object paramValue = paramMap.get(paramKey); //Если очередной параметр есть массив строк... if (paramValue instanceof String[]) { boolean isAllNull = true; //проверяем, есть ли среди значений массива хоть одна непустая for (String s : (String[]) paramValue) { if (!s.trim().isEmpty()) { isAllNull = false; break; } } //если не нашлось ни одной, удаляем из отображения названий параметров на значения данный параметр if (isAllNull) { it.remove(); } } }
return invocation.invoke(); } } |
И прописав в struts.xml:
| Код | <interceptors> <interceptor name="emptyStrings" class="com.vc.vacancies.controller.EmptyStringsInterceptor" /> <interceptor-stack name="vacanciesDefaultStack"> <interceptor-ref name="emptyStrings" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors>
<default-interceptor-ref name="vacanciesDefaultStack" />
|
|