/** * Get the bound value. * @see #getBindStatus() */ @Nullable protected final Object getBoundValue() throws JspException { return getBindStatus().getValue(); }
/** * Get the bound value. * @see #getBindStatus() */ @Nullable protected final Object getBoundValue() throws JspException { return getBindStatus().getValue(); }
Object boundValue = bindStatus.getValue(); if (ObjectUtils.nullSafeEquals(boundValue, candidateValue)) { return true;
@Override @SuppressWarnings("rawtypes") protected void processTemplate(Template template, SimpleHash fmModel, HttpServletResponse response) throws TemplateException { Map model = fmModel.toMap(); assertTrue(model.get(FreeMarkerView.SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE) instanceof RequestContext); RequestContext rc = (RequestContext) model.get(FreeMarkerView.SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE); BindStatus status = rc.getBindStatus("tb.name"); assertEquals("name", status.getExpression()); assertEquals("juergen", status.getValue()); } };
@Test public void bindTagWithFieldButWithoutErrorsInstance() 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, PageContext.REQUEST_SCOPE); assertEquals("name", status.getExpression()); assertEquals("juergen&eva", status.getValue()); }
@Test public void bindTagWithBeanButWithoutErrorsInstance() 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, PageContext.REQUEST_SCOPE); assertNull(status.getExpression()); assertNull(status.getValue()); }
@Test public void bindTagWithSetValueAndHtmlEscaping() 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, PageContext.REQUEST_SCOPE); assertEquals("someSet", status.getExpression()); assertTrue(status.getValue() instanceof Set); }
@Test public void bindTagWithFieldButWithoutErrorsInstanceAndHtmlEscaping() 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, PageContext.REQUEST_SCOPE); assertEquals("name", status.getExpression()); assertEquals("juergen&eva", status.getValue()); }
@Test public void bindTagWithIndexedPropertiesAndCustomEditor() throws JspException { PageContext pc = createPageContext(); IndexedTestBean tb = new IndexedTestBean(); DataBinder binder = new ServletRequestDataBinder(tb, "tb"); binder.registerCustomEditor(TestBean.class, null, new PropertyEditorSupport() { @Override public String getAsText() { return "something"; } }); Errors errors = binder.getBindingResult(); errors.rejectValue("array[0]", "code1", "message1"); errors.rejectValue("array[0]", "code2", "message2"); pc.getRequest().setAttribute(BindingResult.MODEL_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, PageContext.REQUEST_SCOPE); 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())); }
@Test public void bindTagWithToStringAndHtmlEscaping() 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, PageContext.REQUEST_SCOPE); assertEquals("doctor", status.getExpression()); assertTrue(status.getValue() instanceof NestedTestBean); assertTrue(status.getDisplayValue().contains("juergen&eva")); }
@Test public void bindTagWithIndexedProperties() throws JspException { PageContext pc = createPageContext(); IndexedTestBean tb = new IndexedTestBean(); Errors errors = new ServletRequestDataBinder(tb, "tb").getBindingResult(); errors.rejectValue("array[0]", "code1", "message1"); errors.rejectValue("array[0]", "code2", "message2"); pc.getRequest().setAttribute(BindingResult.MODEL_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, PageContext.REQUEST_SCOPE); 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])); }
@Test public void withNestedOptions() throws Exception { this.tag.setPath("country"); int result = this.tag.doStartTag(); assertEquals(Tag.EVAL_BODY_INCLUDE, result); BindStatus value = (BindStatus) getPageContext().getAttribute(SelectTag.LIST_VALUE_PAGE_ATTRIBUTE); assertEquals("Selected country not exposed in page context", "UK", value.getValue()); result = this.tag.doEndTag(); assertEquals(Tag.EVAL_PAGE, result); this.tag.doFinally(); String output = getOutput(); assertTrue(output.startsWith("<select ")); assertTrue(output.endsWith("</select>")); assertContainsAttribute(output, "name", "country"); }
@Test public void simpleBindTagWithinForm() throws Exception { BindTag bindTag = new BindTag(); bindTag.setPath("name"); bindTag.setPageContext(getPageContext()); bindTag.doStartTag(); BindStatus bindStatus = (BindStatus) getPageContext().findAttribute(BindTag.STATUS_VARIABLE_NAME); assertEquals("Rob", bindStatus.getValue()); }
@Test public void bindTagWithMappedProperties() throws JspException { PageContext pc = createPageContext(); IndexedTestBean tb = new IndexedTestBean(); Errors errors = new ServletRequestDataBinder(tb, "tb").getBindingResult(); errors.rejectValue("map[key1]", "code1", "message1"); errors.rejectValue("map[key1]", "code2", "message2"); pc.getRequest().setAttribute(BindingResult.MODEL_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, PageContext.REQUEST_SCOPE); 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])); }
@Test public void bindTagWithoutErrors() throws JspException { PageContext pc = createPageContext(); Errors errors = new ServletRequestDataBinder(new TestBean(), "tb").getBindingResult(); pc.getRequest().setAttribute(BindingResult.MODEL_KEY_PREFIX + "tb", errors); BindTag tag = new BindTag(); tag.setPageContext(pc); tag.setPath("tb"); assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME, PageContext.REQUEST_SCOPE); assertTrue("Has status variable", status != null); assertTrue("Correct expression", status.getExpression() == null); assertTrue("Correct value", status.getValue() == null); assertTrue("Correct displayValue", "".equals(status.getDisplayValue())); assertTrue("Correct isError", !status.isError()); assertTrue("Correct errorCodes", status.getErrorCodes().length == 0); assertTrue("Correct errorMessages", status.getErrorMessages().length == 0); assertTrue("Correct errorCode", "".equals(status.getErrorCode())); assertTrue("Correct errorMessage", "".equals(status.getErrorMessage())); assertTrue("Correct errorMessagesAsString", "".equals(status.getErrorMessagesAsString(","))); }
@Test public void bindTagWithNestedFieldErrors() throws JspException { PageContext pc = createPageContext(); TestBean tb = new TestBean(); tb.setName("name1"); TestBean spouse = new TestBean(); spouse.setName("name2"); tb.setSpouse(spouse); Errors errors = new ServletRequestDataBinder(tb, "tb").getBindingResult(); errors.rejectValue("spouse.name", "code1", "message1"); pc.getRequest().setAttribute(BindingResult.MODEL_KEY_PREFIX + "tb", errors); BindTag tag = new BindTag(); tag.setPageContext(pc); tag.setPath("tb.spouse.name"); assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); BindStatus status = (BindStatus) pc.getAttribute(BindTag.STATUS_VARIABLE_NAME, PageContext.REQUEST_SCOPE); 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(" - "))); }
assertTrue("Has status variable", status != null); assertTrue("Correct expression", status.getExpression() == null); assertTrue("Correct value", status.getValue() == null); assertTrue("Correct displayValue", "".equals(status.getDisplayValue())); assertTrue("Correct isError", status.isError()); 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("Has status variable", status != null); assertTrue("Correct expression", status.getExpression() == null); assertTrue("Correct value", status.getValue() == null); assertTrue("Correct displayValue", "".equals(status.getDisplayValue())); assertTrue("Correct isError", status.isError()); 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("Has status variable", status != null); assertTrue("Correct expression", status.getExpression() == null); assertTrue("Correct value", status.getValue() == null); assertTrue("Correct displayValue", "".equals(status.getDisplayValue())); assertTrue("Correct isError", status.isError()); 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());
@Test public void withNestedBindTagWithinForm() throws Exception { NestedPathTag nestedPathTag = new NestedPathTag(); nestedPathTag.setPath("spouse."); nestedPathTag.setPageContext(getPageContext()); nestedPathTag.doStartTag(); BindTag bindTag = new BindTag(); bindTag.setPath("name"); bindTag.setPageContext(getPageContext()); bindTag.doStartTag(); BindStatus bindStatus = (BindStatus) getPageContext().findAttribute(BindTag.STATUS_VARIABLE_NAME); assertEquals("Sally", bindStatus.getValue()); }