// 拦截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; }
// TODO: Fixme... This test does not work with GenericsObjectDeterminer! public void testStringToCollectionConversion() { ValueStack stack = ActionContext.getContext().getValueStack(); Map<String, Object> stackContext = stack.getContext(); stackContext.put(ReflectionContextState.CREATE_NULL_OBJECTS, Boolean.TRUE); stackContext.put(ReflectionContextState.DENY_METHOD_EXECUTION, Boolean.TRUE); stackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE); AnnotationUser user = new AnnotationUser(); stack.push(user); stack.setValue("list", "asdf"); assertNotNull(user.getList()); assertEquals(1, user.getList().size()); assertEquals(String.class, user.getList().get(0).getClass()); assertEquals("asdf", user.getList().get(0)); }
public void testLocalizedDateConversion() throws Exception { Date date = new Date(System.currentTimeMillis()); Locale locale = Locale.GERMANY; DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); String dateString = df.format(date); context.put(ActionContext.LOCALE, locale); assertEquals(dateString, converter.convertValue(context, null, null, null, date, String.class)); }
public void testFindConversionMappingForInterface() { ModelDrivenAnnotationAction2 action = new ModelDrivenAnnotationAction2(); 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 = "asdf:123"; Object o = converter.convertValue( ognlStackContext, action.getModel(), null, "barObj", value, Bar.class); assertNotNull(o); assertTrue("class is: " + o.getClass(), o instanceof Bar); Bar b = (Bar) o; assertEquals(value, b.getTitle() + ":" + b.getSomethingElse()); }
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")); }
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")); }