sb.append("{ "); if (validationAware.hasErrors()) { if (validationAware.hasActionErrors()) { sb.append("\"errors\":"); sb.append(buildArray(validationAware.getActionErrors())); if (validationAware.hasFieldErrors()) { if (validationAware.hasActionErrors()) sb.append(","); sb.append("\"fieldErrors\": {"); Map<String, List<String>> fieldErrors = validationAware .getFieldErrors(); for (Map.Entry<String, List<String>> fieldError : fieldErrors .entrySet()) {
public String intercept(ActionInvocation invocation) throws Exception { Object action = invocation.getAction(); if (action instanceof ValidationAware) { ValidationAware validationAware = (ValidationAware) action; validationAware.addFieldError("field", "field error"); validationAware.addActionMessage("action message"); validationAware.addActionError("action error"); } return invocation.invoke(); }
/** * If the result is a redirect then store error and messages in the session. * @param invocation * @param validationAware * @throws java.lang.Exception */ protected void after(ActionInvocation invocation, ValidationAware validationAware) throws Exception { Result result = invocation.getResult(); if (result != null && (result instanceof ServletRedirectResult || result instanceof ServletActionRedirectResult || result instanceof FrontServletActionRedirectResult)) { HttpServletRequest request = (HttpServletRequest) invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST); HttpSession session = request.getSession(); Collection<String> actionErrors = validationAware.getActionErrors(); if (actionErrors != null && actionErrors.size() > 0) { session.setAttribute(ACTION_ERRORS_KEY, actionErrors); } Collection<String> actionMessages = validationAware.getActionMessages(); if (actionMessages != null && actionMessages.size() > 0) { session.setAttribute(ACTION_MESSAGES_KEY, actionMessages); } Map<String, List<String>> fieldErrors = validationAware.getFieldErrors(); if (fieldErrors != null && fieldErrors.size() > 0) { session.setAttribute(FIELD_ERRORS_KEY, fieldErrors); } } } }
@SuppressWarnings("unchecked") protected void selectTarget() { // Select target (content to return) Throwable e = (Throwable)stack.findValue("exception"); if (e != null) { // Exception target = e; hasErrors = true; } else if (action instanceof ValidationAware && ((ValidationAware)action).hasErrors()) { // Error messages ValidationAware validationAwareAction = ((ValidationAware)action); Map errors = new HashMap(); if (validationAwareAction.getActionErrors().size() > 0) { errors.put("actionErrors", validationAwareAction.getActionErrors()); } if (validationAwareAction.getFieldErrors().size() > 0) { errors.put("fieldErrors", validationAwareAction.getFieldErrors()); } target = errors; hasErrors = true; } else if (action instanceof ModelDriven) { // Model target = ((ModelDriven)action).getModel(); } else { target = action; } if (shouldRestrictToGET()) { target = null; } }
currentActionVal.setActionErrors(callerActionVal.getActionErrors()); currentActionVal.setFieldErrors(callerActionVal.getFieldErrors());
@Override protected String handleInvalidToken(ActionInvocation invocation) throws Exception { Object action = invocation.getAction(); String errorMessage = this.getCustomMessage(invocation, "struts.messages.invalid.token", "The form has already been processed or no token was supplied, please try again."); String message = this.getCustomMessage(invocation, "struts.messages.invalid.token.message", "Stop double-submission of forms."); if (action instanceof ValidationAware) { if (null == this.getTypeMessages() || this.getTypeMessages().equalsIgnoreCase(TYPE_RETURN_NONE_MESSAGE)) { //nothing to do } else if (this.getTypeMessages().equalsIgnoreCase(TYPE_RETURN_ACTION_ERROR_MESSAGE)) { ((ValidationAware) action).addActionError(errorMessage); } else if (this.getTypeMessages().equalsIgnoreCase(TYPE_RETURN_ACTION_MESSAGE)) { ((ValidationAware) action).addActionMessage(message); } else { LOG.warn("Invalid message type : {}", this.getTypeMessages()); } } else { LOG.warn(errorMessage); } return INVALID_TOKEN_CODE; }
public String intercept(ActionInvocation invocation) throws Exception { Object action = invocation.getAction(); if (action instanceof ValidationAware && action instanceof Validateable) { ((Validateable)action).validate(); if (((ValidationAware)action).hasErrors()) { return Action.INPUT; } } return invocation.invoke(); }
/** * Add error to action in cases where token is required, but is missing or invalid. Implementations may * wish to override this method, but most should be able to get away with just overriding * {@link #internationaliseErrorMessage} * * @param action the action to add the error message to * @param errorMessageKey the error message key that will be used to internationalise the message */ protected void addInvalidTokenError(Action action, String errorMessageKey) { if (action instanceof ValidationAware) ((ValidationAware)action).addActionError(internationaliseErrorMessage(action, errorMessageKey)); }
protected boolean containsErrors() { T action = this.getAction(); if (action instanceof ValidationAware) { return ((ValidationAware) action).hasActionErrors(); } throw new UnsupportedOperationException("Current action does not implement ValidationAware interface"); }
public String intercept(ActionInvocation invocation) throws Exception { ActionContext invocationContext = invocation.getInvocationContext(); Object action = invocation.getAction(); if (action instanceof ValidationAware) { ValidationAware va = (ValidationAware) action; va.addFieldError("field", "message"); } .... }
ValidationAware validationAwareAction = (ValidationAware) action; if (validationAwareAction.hasErrors()) { LOG.debug("Errors on action {}, returning result name 'input'", validationAwareAction); ActionMapping mapping = (ActionMapping) ActionContext.getContext().get(ServletActionContext.ACTION_MAPPING); errors.put("actionErrors", validationAwareAction.getActionErrors()); errors.put("fieldErrors", validationAwareAction.getFieldErrors()); return manager.handleResult(invocation, info, errors);
@Override protected String handleInvalidToken(ActionInvocation invocation) throws Exception { Object action = invocation.getAction(); String errorMessage = this.getCustomMessage(invocation, "struts.messages.invalid.token", "The form has already been processed or no token was supplied, please try again."); String message = this.getCustomMessage(invocation, "struts.messages.invalid.token.message", "Stop double-submission of forms."); if (action instanceof ValidationAware) { if (null == this.getTypeMessages() || this.getTypeMessages().equalsIgnoreCase(TYPE_RETURN_NONE_MESSAGE)) { //nothing to do } else if (this.getTypeMessages().equalsIgnoreCase(TYPE_RETURN_ACTION_ERROR_MESSAGE)) { ((ValidationAware) action).addActionError(errorMessage); } else if (this.getTypeMessages().equalsIgnoreCase(TYPE_RETURN_ACTION_MESSAGE)) { ((ValidationAware) action).addActionMessage(message); } else { LOG.warn("Invalid message type : {}", this.getTypeMessages()); } } else { LOG.warn(errorMessage); } return INVALID_TOKEN_CODE; }
@Override protected String doIntercept(ActionInvocation invocation) throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); HttpServletRequest request = ServletActionContext.getRequest(); Object action = invocation.getAction(); if (isJsonEnabled(request)) { if (action instanceof ValidationAware) { // generate json ValidationAware validationAware = (ValidationAware) action; if (validationAware.hasErrors()) { return generateJSON(request, response, validationAware); } } if (isValidateOnly(request)) { //there were no errors setupEncoding(response, request); response.getWriter().print("{}"); response.setContentType("application/json"); return Action.NONE; } else { return invocation.invoke(); } } else return invocation.invoke(); }
/** * If the result is a redirect then store error and messages in the session. * @param invocation * @param validationAware * @throws java.lang.Exception */ protected void after(ActionInvocation invocation, ValidationAware validationAware) throws Exception { Result result = invocation.getResult(); if (result != null && (result instanceof ServletRedirectResult || result instanceof ServletActionRedirectResult || result instanceof FrontServletActionRedirectResult)) { HttpServletRequest request = (HttpServletRequest) invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST); HttpSession session = request.getSession(); Collection<String> actionErrors = validationAware.getActionErrors(); if (actionErrors != null && actionErrors.size() > 0) { session.setAttribute(ACTION_ERRORS_KEY, actionErrors); } Collection<String> actionMessages = validationAware.getActionMessages(); if (actionMessages != null && actionMessages.size() > 0) { session.setAttribute(ACTION_MESSAGES_KEY, actionMessages); } Map<String, List<String>> fieldErrors = validationAware.getFieldErrors(); if (fieldErrors != null && fieldErrors.size() > 0) { session.setAttribute(FIELD_ERRORS_KEY, fieldErrors); } } } }
if (actionErrors != null && actionErrors.size() > 0) { for (String error : actionErrors) { validationAware.addActionError(error); if (actionMessages != null && actionMessages.size() > 0) { for (String message : actionMessages) { validationAware.addActionMessage(message); for (Map.Entry<String, List<String>> fieldError : fieldErrors.entrySet()) { for (String message : fieldError.getValue()) { validationAware.addFieldError(fieldError.getKey(), message);
@Override protected String doIntercept(ActionInvocation invocation) throws Exception { Validator validator = this.beanValidationManager.getValidator(); if (validator == null) { log.debug("There is no Bean Validator configured in class path. Skipping Bean validation.."); return invocation.invoke(); } log.debug("Starting bean validation using validator: {}", validator.getClass()); Object action = invocation.getAction(); ActionProxy actionProxy = invocation.getProxy(); String methodName = actionProxy.getMethod(); log.debug("Validating [{}/{}] with method [{}]", invocation.getProxy().getNamespace(), invocation.getProxy().getActionName(), methodName); if (null == MethodUtils.getAnnotation(getActionMethod(action.getClass(), methodName), SkipValidation.class, true, true)) { Class<?>[] validationGroup = getValidationGroups(action, methodName); // performing bean validation on action performBeanValidation(action, validator, validationGroup); } if(action instanceof ValidationAware && ((ValidationAware) action).hasErrors()) { HttpServletResponse response = (HttpServletResponse) invocation.getInvocationContext() .get(StrutsStatics.HTTP_RESPONSE); response.setStatus(validationFailureStatusCode); return Action.INPUT; } return invocation.invoke(); }
ValidationAware aware = (ValidationAware) action; ValidationAwareSupport vas = new ValidationAwareSupport(); vas.setActionErrors(aware.getActionErrors()); vas.setActionMessages(aware.getActionMessages()); vas.setFieldErrors(aware.getFieldErrors());
if (actionErrors != null && actionErrors.size() > 0) { for (String error : actionErrors) { validationAware.addActionError(error); if (actionMessages != null && actionMessages.size() > 0) { for (String message : actionMessages) { validationAware.addActionMessage(message); for (Map.Entry<String, List<String>> fieldError : fieldErrors.entrySet()) { for (String message : fieldError.getValue()) { validationAware.addFieldError(fieldError.getKey(), message);