@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 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("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 errorCodes", status.getErrorCodes().length == 2); 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 errorCodes", status.getErrorCodes().length == 1); 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 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 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 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 expression", status.getExpression() == null); assertTrue("Correct value", status.getValue() == null); assertTrue("Correct displayValue", "".equals(status.getDisplayValue())); assertTrue("Correct isError", status.isError()); assertTrue("Correct errorMessages", status.getErrorMessages().length == 1); 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 == 1);
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 errorCodes", status.getErrorCodes().length == 2); 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 errorCodes", status.getErrorCodes().length == 1); 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 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 == 1); 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 == 1);
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 == 1); 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 == 1);
assertTrue("Has status variable", status != null); assertEquals("tb.name", status.getPath()); assertEquals("Correct field value", "", status.getDisplayValue()); assertTrue("Has status variable", status2 != null); assertEquals("tb.age", status2.getPath()); assertEquals("Correct field value", "0", status2.getDisplayValue()); assertSame("Status matches previous status", status, status3); assertEquals("tb.name", status.getPath()); assertEquals("Correct field value", "", status.getDisplayValue());
@Override public String getDisplayValue() { return this.bindStatus.getDisplayValue(); }
public String getDisplayValue(String field) { try { BindStatus status = getFieldStatus(field); if (status != null) { return status.getDisplayValue(); } } catch (Exception e) { log.error("Error determing form field display value " + command + "." + field, e); } return ""; }
@Override protected Tag createReadOnlyLabelTag( Map<String, String> attributes, MetawidgetTag metawidget ) { // Use the Spring binder to render the read-only value RequestContext requestContext = (RequestContext) metawidget.getPageContext().getAttribute( RequestContextAwareTag.REQUEST_CONTEXT_PAGE_ATTRIBUTE ); String path = metawidget.getPath() + StringUtils.SEPARATOR_DOT_CHAR + attributes.get( NAME ); String value = requestContext.getBindStatus( path ).getDisplayValue(); // Support lookup labels String lookupLabels = attributes.get( LOOKUP_LABELS ); if ( lookupLabels != null ) { List<String> lookupList = CollectionUtils.fromString( attributes.get( LOOKUP ) ); int indexOf = lookupList.indexOf( value ); if ( indexOf != -1 ) { List<String> lookupLabelsList = CollectionUtils.fromString( lookupLabels ); if ( indexOf < lookupLabelsList.size() ) { value = lookupLabelsList.get( indexOf ); } } } return new LiteralTag( value ); }