public void testFieldErrorMessageAddedWhenConversionFailsOnModelDriven() {
    ModelDrivenAnnotationAction action = new ModelDrivenAnnotationAction();
    ValueStack stack = ActionContext.getContext().getValueStack();
    stack.push(action);
    stack.push(action.getModel());

    Map<String, Object> ognlStackContext = stack.getContext();
    ognlStackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);

    String[] value = new String[] {"invalid date"};
    assertEquals(
        "Conversion should have failed.",
        OgnlRuntime.NoConversionPossible,
        converter.convertValue(ognlStackContext, action, null, "birth", value, Date.class));
    stack.pop();
    stack.pop();

    Map conversionErrors = (Map) ognlStackContext.get(ActionContext.CONVERSION_ERRORS);
    assertNotNull(conversionErrors);
    assertEquals(1, conversionErrors.size());
    assertNotNull(conversionErrors.get("birth"));
    assertEquals(value, conversionErrors.get("birth"));
  }
예제 #2
0
 // 拦截Action处理的拦截方法
 public String intercept(ActionInvocation invocation) throws Exception {
   // 取得请求相关的ActionContext实例
   ActionContext ctx = invocation.getInvocationContext();
   Map session = ctx.getSession();
   // 取出名为user的Session属性
   String user = (String) session.get("user");
   // 如果没有登录,或者登录所用的用户名不是scott,都返回重新登录
   if (user != null && user.equals("crazyit.org")) {
     return invocation.invoke();
   }
   // 没有登录,将服务器提示设置成一个HttpServletRequest属性
   ctx.put("tip", "您还没有登录,请输入crazyit.org,leegang登录系统");
   // 直接返回login的逻辑视图
   return Action.LOGIN;
 }
  public void testFieldErrorMessageAddedForComplexProperty() {
    SimpleAnnotationAction action = new SimpleAnnotationAction();
    action.setBean(new AnnotatedTestBean());

    ValueStack stack = ActionContext.getContext().getValueStack();
    stack.push(action);

    Map<String, Object> ognlStackContext = stack.getContext();
    ognlStackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
    ognlStackContext.put(XWorkConverter.CONVERSION_PROPERTY_FULLNAME, "bean.birth");

    String[] value = new String[] {"invalid date"};
    assertEquals(
        "Conversion should have failed.",
        OgnlRuntime.NoConversionPossible,
        converter.convertValue(
            ognlStackContext, action.getBean(), null, "birth", value, Date.class));
    stack.pop();

    Map conversionErrors = (Map) stack.getContext().get(ActionContext.CONVERSION_ERRORS);
    assertNotNull(conversionErrors);
    assertTrue(conversionErrors.size() == 1);
    assertEquals(value, conversionErrors.get("bean.birth"));
  }