📄 bindtagtests.java
字号:
status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertTrue("Has status variable", status != null);
assertTrue("Correct expression", "*".equals(status.getExpression()));
assertTrue("Correct value", status.getValue() == null);
assertTrue("Correct displayValue", "".equals(status.getDisplayValue()));
assertTrue("Correct isError", status.isError());
assertTrue("Correct errorCodes", status.getErrorCodes().length == 3);
assertTrue("Correct errorCode", "code1".equals(status.getErrorCode()));
assertTrue("Correct errorCode", "code1".equals(status.getErrorCodes()[0]));
assertTrue("Correct errorCode", "code2".equals(status.getErrorCodes()[1]));
assertTrue("Correct errorCode", "code2".equals(status.getErrorCodes()[2]));
}
public void testBindTagWithFieldErrorsAndDefaultMessageOnly() throws JspException {
PageContext pc = createPageContext();
TestBean tb = new TestBean();
tb.setName("name1");
BindException errors = new ServletRequestDataBinder(tb, "tb").getErrors();
errors.rejectValue("name", null, "message & 1");
errors.rejectValue("name", null, "message2");
errors.rejectValue("age", null, "message2");
pc.getRequest().setAttribute(BindException.ERROR_KEY_PREFIX + "tb", errors);
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.name");
tag.setHtmlEscape("true");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertTrue("Has status variable", status != null);
assertTrue("Correct expression", "name".equals(status.getExpression()));
assertTrue("Correct value", "name1".equals(status.getValue()));
assertTrue("Correct displayValue", "name1".equals(status.getDisplayValue()));
assertTrue("Correct isError", status.isError());
assertTrue("Correct errorMessages", status.getErrorMessages().length == 2);
assertTrue("Correct errorMessage", "message & 1".equals(status.getErrorMessage()));
assertTrue("Correct errorMessage", "message & 1".equals(status.getErrorMessages()[0]));
assertTrue("Correct errorMessage", "message2".equals(status.getErrorMessages()[1]));
assertTrue("Correct errorMessagesAsString",
"message & 1 - message2".equals(status.getErrorMessagesAsString(" - ")));
tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.age");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertTrue("Has status variable", status != null);
assertTrue("Correct expression", "age".equals(status.getExpression()));
assertTrue("Correct value", new Integer(0).equals(status.getValue()));
assertTrue("Correct displayValue", "0".equals(status.getDisplayValue()));
assertTrue("Correct isError", status.isError());
assertTrue("Correct errorMessages", status.getErrorMessages().length == 1);
assertTrue("Correct errorMessage", "message2".equals(status.getErrorMessage()));
assertTrue("Correct errorMessagesAsString", "message2".equals(status.getErrorMessagesAsString(" - ")));
tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.*");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertTrue("Has status variable", status != null);
assertTrue("Correct expression", "*".equals(status.getExpression()));
assertTrue("Correct value", status.getValue() == null);
assertTrue("Correct displayValue", "".equals(status.getDisplayValue()));
assertTrue("Correct isError", status.isError());
assertTrue("Correct errorMessages", status.getErrorMessages().length == 3);
assertTrue("Correct errorMessage", "message & 1".equals(status.getErrorMessage()));
assertTrue("Correct errorMessage", "message & 1".equals(status.getErrorMessages()[0]));
assertTrue("Correct errorMessage", "message2".equals(status.getErrorMessages()[1]));
assertTrue("Correct errorMessage", "message2".equals(status.getErrorMessages()[2]));
}
public void testBindTagWithNestedFieldErrors() throws JspException {
PageContext pc = createPageContext();
TestBean tb = new TestBean();
tb.setName("name1");
TestBean spouse = new TestBean();
spouse.setName("name2");
tb.setSpouse(spouse);
BindException errors = new ServletRequestDataBinder(tb, "tb").getErrors();
errors.rejectValue("spouse.name", "code1", "message1");
pc.getRequest().setAttribute(BindException.ERROR_KEY_PREFIX + "tb", errors);
BindTag tag = new BindTag();
tag.setPageContext(pc);
pc.setAttribute("myattr", "tb.spouse.name");
tag.setPath("${myattr}");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertTrue("Has status variable", status != null);
assertTrue("Correct expression", "spouse.name".equals(status.getExpression()));
assertTrue("Correct value", "name2".equals(status.getValue()));
assertTrue("Correct displayValue", "name2".equals(status.getDisplayValue()));
assertTrue("Correct isError", status.isError());
assertTrue("Correct errorCodes", status.getErrorCodes().length == 1);
assertTrue("Correct errorMessages", status.getErrorMessages().length == 1);
assertTrue("Correct errorCode", "code1".equals(status.getErrorCode()));
assertTrue("Correct errorMessage", "message1".equals(status.getErrorMessage()));
assertTrue("Correct errorMessagesAsString", "message1".equals(status.getErrorMessagesAsString(" - ")));
}
public void testPropertyExposing() throws JspException {
PageContext pc = createPageContext();
TestBean tb = new TestBean();
tb.setName("name1");
BindException errors = new BindException(tb, "tb");
errors.rejectValue("name", "code1", null, "message & 1");
errors.rejectValue("name", "code2", null, "message2");
pc.getRequest().setAttribute(BindException.ERROR_KEY_PREFIX + "tb", errors);
// test global property (should be null)
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
assertNull(tag.getProperty());
// test property set (tb.name)
tag.release();
tag.setPageContext(pc);
tag.setPath("tb.name");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
assertEquals("name", tag.getProperty());
}
public void testBindTagWithIndexedProperties() throws JspException {
PageContext pc = createPageContext();
IndexedTestBean tb = new IndexedTestBean();
BindException errors = new ServletRequestDataBinder(tb, "tb").getErrors();
errors.rejectValue("array[0]", "code1", "message1");
errors.rejectValue("array[0]", "code2", "message2");
pc.getRequest().setAttribute(BindException.ERROR_KEY_PREFIX + "tb", errors);
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.array[0]");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertTrue("Has status variable", status != null);
assertTrue("Correct expression", "array[0]".equals(status.getExpression()));
assertTrue("Value is TestBean", status.getValue() instanceof TestBean);
assertTrue("Correct value", "name0".equals(((TestBean) status.getValue()).getName()));
assertTrue("Correct isError", status.isError());
assertTrue("Correct errorCodes", status.getErrorCodes().length == 2);
assertTrue("Correct errorMessages", status.getErrorMessages().length == 2);
assertTrue("Correct errorCode", "code1".equals(status.getErrorCodes()[0]));
assertTrue("Correct errorCode", "code2".equals(status.getErrorCodes()[1]));
assertTrue("Correct errorMessage", "message1".equals(status.getErrorMessages()[0]));
assertTrue("Correct errorMessage", "message2".equals(status.getErrorMessages()[1]));
}
public void testBindTagWithMappedProperties() throws JspException {
PageContext pc = createPageContext();
IndexedTestBean tb = new IndexedTestBean();
BindException errors = new ServletRequestDataBinder(tb, "tb").getErrors();
errors.rejectValue("map[key1]", "code1", "message1");
errors.rejectValue("map[key1]", "code2", "message2");
pc.getRequest().setAttribute(BindException.ERROR_KEY_PREFIX + "tb", errors);
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.map[key1]");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertTrue("Has status variable", status != null);
assertTrue("Correct expression", "map[key1]".equals(status.getExpression()));
assertTrue("Value is TestBean", status.getValue() instanceof TestBean);
assertTrue("Correct value", "name4".equals(((TestBean) status.getValue()).getName()));
assertTrue("Correct isError", status.isError());
assertTrue("Correct errorCodes", status.getErrorCodes().length == 2);
assertTrue("Correct errorMessages", status.getErrorMessages().length == 2);
assertTrue("Correct errorCode", "code1".equals(status.getErrorCodes()[0]));
assertTrue("Correct errorCode", "code2".equals(status.getErrorCodes()[1]));
assertTrue("Correct errorMessage", "message1".equals(status.getErrorMessages()[0]));
assertTrue("Correct errorMessage", "message2".equals(status.getErrorMessages()[1]));
}
public void testBindTagWithIndexedPropertiesAndCustomEditor() throws JspException {
PageContext pc = createPageContext();
IndexedTestBean tb = new IndexedTestBean();
DataBinder binder = new ServletRequestDataBinder(tb, "tb");
binder.registerCustomEditor(TestBean.class, null, new PropertyEditorSupport() {
public String getAsText() {
return "something";
}
});
BindException errors = binder.getErrors();
errors.rejectValue("array[0]", "code1", "message1");
errors.rejectValue("array[0]", "code2", "message2");
pc.getRequest().setAttribute(BindException.ERROR_KEY_PREFIX + "tb", errors);
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.array[0]");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertTrue("Has status variable", status != null);
assertTrue("Correct expression", "array[0]".equals(status.getExpression()));
// because of the custom editor getValue() should return a String
assertTrue("Value is TestBean", status.getValue() instanceof String);
assertTrue("Correct value", "something".equals(status.getValue()));
}
public void testBindTagWithToStringAndHtmlEscaping() throws JspException {
PageContext pc = createPageContext();
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.doctor");
tag.setHtmlEscape("true");
TestBean tb = new TestBean("somebody", 99);
NestedTestBean ntb = new NestedTestBean("juergen&eva");
tb.setDoctor(ntb);
pc.getRequest().setAttribute("tb", tb);
tag.doStartTag();
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertEquals("doctor", status.getExpression());
assertTrue(status.getValue() instanceof NestedTestBean);
assertTrue(status.getDisplayValue().indexOf("juergen&eva") != -1);
}
public void testBindTagWithSetValueAndHtmlEscaping() throws JspException {
PageContext pc = createPageContext();
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.someSet");
tag.setHtmlEscape("true");
pc.getRequest().setAttribute("tb", new TestBean("juergen&eva", 99));
tag.doStartTag();
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertEquals("someSet", status.getExpression());
assertTrue(status.getValue() instanceof Set);
}
public void testBindTagWithFieldButWithoutErrorsInstance() throws JspException {
PageContext pc = createPageContext();
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.name");
pc.getRequest().setAttribute("tb", new TestBean("juergen&eva", 99));
tag.doStartTag();
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertEquals("name", status.getExpression());
assertEquals("juergen&eva", status.getValue());
}
public void testBindTagWithFieldButWithoutErrorsInstanceAndHtmlEscaping() throws JspException {
PageContext pc = createPageContext();
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb.name");
tag.setHtmlEscape("true");
pc.getRequest().setAttribute("tb", new TestBean("juergen&eva", 99));
tag.doStartTag();
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertEquals("name", status.getExpression());
assertEquals("juergen&eva", status.getValue());
}
public void testBindTagWithBeanButWithoutErrorsInstance() throws JspException {
PageContext pc = createPageContext();
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb");
pc.getRequest().setAttribute("tb", new TestBean("juergen", 99));
tag.doStartTag();
BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME);
assertNull(status.getExpression());
assertNull(status.getValue());
}
public void testBindTagWithoutBean() throws JspException {
PageContext pc = createPageContext();
BindTag tag = new BindTag();
tag.setPageContext(pc);
tag.setPath("tb");
try {
tag.doStartTag();
fail("Should have thrown JspException");
}
catch (JspException ex) {
// expected
}
}
public void testBindErrorsTagWithoutErrors() throws JspException {
PageContext pc = createPageContext();
BindException errors = new ServletRequestDataBinder(new TestBean(), "tb").getErrors();
pc.getRequest().setAttribute(BindException.ERROR_KEY_PREFIX + "tb", errors);
BindErrorsTag tag = new BindErrorsTag();
tag.setPageContext(pc);
tag.setName("tb");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.SKIP_BODY);
assertTrue("Doesn't have errors variable", pc.getAttribute(BindErrorsTag.ERRORS_VARIABLE_NAME) == null);
}
public void testBindErrorsTagWithErrors() throws JspException {
PageContext pc = createPageContext();
BindException errors = new ServletRequestDataBinder(new TestBean(), "tb").getErrors();
errors.reject("test", null, "test");
pc.getRequest().setAttribute(BindException.ERROR_KEY_PREFIX + "tb", errors);
BindErrorsTag tag = new BindErrorsTag();
tag.setPageContext(pc);
tag.setName("tb");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE);
assertTrue("Has errors variable", pc.getAttribute(BindErrorsTag.ERRORS_VARIABLE_NAME) == errors);
}
public void testBindErrorsTagWithoutBean() throws JspException {
PageContext pc = createPageContext();
BindErrorsTag tag = new BindErrorsTag();
tag.setPageContext(pc);
tag.setName("tb");
assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.SKIP_BODY);
}
public void testNestedPathDoEndTag() throws JspException {
PageContext pc = createPageContext();
NestedPathTag tag = new NestedPathTag();
tag.setPath("foo");
tag.setPageContext(pc);
tag.doStartTag();
int returnValue = tag.doEndTag();
assertEquals(Tag.EVAL_PAGE, returnValue);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -