下面列出了怎么用org.springframework.web.servlet.tags.form.TagWriter的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected void renderDefaultContent(TagWriter tagWriter) throws JspException {
tagWriter.startTag(getElement());
writeDefaultAttributes(tagWriter);
// String delimiter = ObjectUtils.getDisplayString(evaluate("delimiter", getDelimiter()));
String[] errorMessages = getBindStatus().getErrorMessages();
for (int i = 0; i < errorMessages.length; i++) {
// for (int i = errorMessages.length-1; i < errorMessages.length; i++) {
String errorMessage = errorMessages[i];
// if (i > 0) {
// tagWriter.appendValue(delimiter);//换行
// }
tagWriter.appendValue(getDisplayString(errorMessage));
break;
}
tagWriter.endTag();
}
@Override
protected void renderDefaultContent(TagWriter tagWriter) throws JspException {
tagWriter.startTag(getElement());
writeDefaultAttributes(tagWriter);
// String delimiter = ObjectUtils.getDisplayString(evaluate("delimiter", getDelimiter()));
String[] errorMessages = getBindStatus().getErrorMessages();
for (int i = errorMessages.length-1; i < errorMessages.length; i++) {
String errorMessage = errorMessages[i];
// if (i > 0) {
// tagWriter.appendValue(delimiter);//换行
// }
tagWriter.appendValue(getDisplayString(errorMessage));
}
tagWriter.endTag();
}
@Override
protected int writeTagContent(TagWriter tagWriter) throws JspException {
super.writeTagContent(tagWriter);
if (!isDisabled()) {
// Write out the 'field was present' marker.
tagWriter.startTag("input");
tagWriter.writeAttribute("type", "hidden");
String name = WebDataBinder.DEFAULT_FIELD_MARKER_PREFIX + getName();
tagWriter.writeAttribute("name", name);
tagWriter.writeAttribute("value", processFieldValue(name, "on", getInputType()));
tagWriter.endTag();
}
return SKIP_BODY;
}
/**
* Copy & Paste, 无修正.
*/
private void writeObjectEntry(TagWriter tagWriter, String valueProperty, String labelProperty, Object item,
int itemIndex) throws JspException {
BeanWrapper wrapper = PropertyAccessorFactory.forBeanPropertyAccess(item);
Object renderValue;
if (valueProperty != null) {
renderValue = wrapper.getPropertyValue(valueProperty);
} else if (item instanceof Enum) {
renderValue = ((Enum<?>) item).name();
} else {
renderValue = item;
}
Object renderLabel = (labelProperty != null ? wrapper.getPropertyValue(labelProperty) : item);
writeElementTag(tagWriter, item, renderValue, renderLabel, itemIndex);
}
@Override
public void writeCustomTagAttributes(TagWriter tagWriter) throws JspException {
String linkAddress = href;
if(keepQueryString){
String qs = WebHolder.getSpringContextHolderRequest().get().getQueryString();
if(StringUtils.isBlank(qs)){
writeHref(tagWriter, linkAddress);
return ;
}
linkAddress += linkAddress.contains("?")?"&":"?";
linkAddress += qs;
}
writeHref(tagWriter, linkAddress);
}
@Override
protected int writeTagContent(TagWriter tagWriter) throws JspException {
// first try to pull value from request attribute.
String conversationId = (String)pageContext.getRequest().getAttribute(attributeName + "_cId");
// if no value was found then try to pull value as request parameter.
if (conversationId == null || conversationId.trim().length() == 0) {
conversationId = pageContext.getRequest().getParameter(attributeName + "_cId");
}
// if a conversation Id was found then process it.
if (conversationId != null && conversationId.trim().length() > 0) {
// set the request attribute.
pageContext.getRequest().setAttribute("curr_" + attributeName + "_cId", conversationId);
if (createHiddenInput) {
// now create the hidden input field.
tagWriter.startTag("input");
tagWriter.writeAttribute("type", "hidden");
tagWriter.writeAttribute("name", attributeName + "_cId");
tagWriter.writeAttribute("value", conversationId);
tagWriter.endTag();
}
}
return EVAL_PAGE;
}
/**
* Copy & Paste, 无修正.
*/
private void writeMapEntry(TagWriter tagWriter, String valueProperty, String labelProperty, Map.Entry entry,
int itemIndex) throws JspException {
Object mapKey = entry.getKey();
Object mapValue = entry.getValue();
BeanWrapper mapKeyWrapper = PropertyAccessorFactory.forBeanPropertyAccess(mapKey);
BeanWrapper mapValueWrapper = PropertyAccessorFactory.forBeanPropertyAccess(mapValue);
Object renderValue = (valueProperty != null ? mapKeyWrapper.getPropertyValue(valueProperty) : mapKey.toString());
Object renderLabel = (labelProperty != null ? mapValueWrapper.getPropertyValue(labelProperty) : mapValue
.toString());
writeElementTag(tagWriter, mapKey, renderValue, renderLabel, itemIndex);
}
/**
* 重载方法,调整元素的输出顺序。
*/
private void writeElementTag(TagWriter tagWriter, Object item, Object value, Object label, int itemIndex)
throws JspException {
String id = resolveId();
String resolvedLabelClass = getInputType();
if (labelCssClass != null) {
resolvedLabelClass += " " + labelCssClass;
}
tagWriter.startTag("label");
tagWriter.writeAttribute("for", id);
tagWriter.writeAttribute("class", resolvedLabelClass);
if (itemIndex > 0) {
Object resolvedDelimiter = evaluate("delimiter", getDelimiter());
if (resolvedDelimiter != null) {
tagWriter.appendValue(resolvedDelimiter.toString());
}
}
tagWriter.startTag("input");
writeOptionalAttribute(tagWriter, "id", id);
writeOptionalAttribute(tagWriter, "name", getName());
writeOptionalAttributes(tagWriter);
tagWriter.writeAttribute("type", getInputType());
renderFromValue(item, value, tagWriter);
tagWriter.endTag();
tagWriter.appendValue(convertToDisplayString(label));
tagWriter.endTag();
}
/**
* SPR-4022
*/
@SuppressWarnings("serial")
@Test
public void nestingInFormTag() throws JspException {
PageContext pc = createPageContext();
TestBean tb = new TestBean();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
ServletRequestDataBinder binder = new ServletRequestDataBinder(tb, "tb");
CustomDateEditor l = new CustomDateEditor(df, true);
binder.registerCustomEditor(Date.class, l);
pc.getRequest().setAttribute(BindingResult.MODEL_KEY_PREFIX + "tb", binder.getBindingResult());
FormTag formTag = new FormTag() {
@Override
protected TagWriter createTagWriter() {
return new TagWriter(new StringWriter());
}
};
String action = "/form.html";
String commandName = "tb";
String name = "formName";
String enctype = "my/enctype";
String method = "POST";
String onsubmit = "onsubmit";
String onreset = "onreset";
String cssClass = "myClass";
String cssStyle = "myStyle";
String acceptCharset = "iso-8859-1";
formTag.setName(name);
formTag.setCssClass(cssClass);
formTag.setCssStyle(cssStyle);
formTag.setAction(action);
formTag.setModelAttribute(commandName);
formTag.setEnctype(enctype);
formTag.setMethod(method);
formTag.setOnsubmit(onsubmit);
formTag.setOnreset(onreset);
formTag.setAcceptCharset(acceptCharset);
formTag.setPageContext(pc);
formTag.doStartTag();
BindTag bindTag1 = new BindTag();
bindTag1.setPageContext(pc);
bindTag1.setPath("date");
bindTag1.doStartTag();
bindTag1.doEndTag();
BindTag bindTag2 = new BindTag();
bindTag2.setPageContext(pc);
bindTag2.setPath("tb.date");
bindTag2.doStartTag();
bindTag2.doEndTag();
BindTag bindTag3 = new BindTag();
bindTag3.setPageContext(pc);
bindTag3.setPath("tb");
bindTag3.doStartTag();
bindTag3.doEndTag();
formTag.doEndTag();
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
@Override
protected TagWriter createTagWriter() {
return new CustomTagWriter(pageContext);
}
/**
* SPR-4022
*/
@SuppressWarnings("serial")
@Test
public void nestingInFormTag() throws JspException {
PageContext pc = createPageContext();
TestBean tb = new TestBean();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
ServletRequestDataBinder binder = new ServletRequestDataBinder(tb, "tb");
CustomDateEditor l = new CustomDateEditor(df, true);
binder.registerCustomEditor(Date.class, l);
pc.getRequest().setAttribute(BindingResult.MODEL_KEY_PREFIX + "tb", binder.getBindingResult());
FormTag formTag = new FormTag() {
@Override
protected TagWriter createTagWriter() {
return new TagWriter(new StringWriter());
}
};
String action = "/form.html";
String commandName = "tb";
String name = "formName";
String enctype = "my/enctype";
String method = "POST";
String onsubmit = "onsubmit";
String onreset = "onreset";
String cssClass = "myClass";
String cssStyle = "myStyle";
String acceptCharset = "iso-8859-1";
formTag.setName(name);
formTag.setCssClass(cssClass);
formTag.setCssStyle(cssStyle);
formTag.setAction(action);
formTag.setModelAttribute(commandName);
formTag.setEnctype(enctype);
formTag.setMethod(method);
formTag.setOnsubmit(onsubmit);
formTag.setOnreset(onreset);
formTag.setAcceptCharset(acceptCharset);
formTag.setPageContext(pc);
formTag.doStartTag();
BindTag bindTag1 = new BindTag();
bindTag1.setPageContext(pc);
bindTag1.setPath("date");
bindTag1.doStartTag();
bindTag1.doEndTag();
BindTag bindTag2 = new BindTag();
bindTag2.setPageContext(pc);
bindTag2.setPath("tb.date");
bindTag2.doStartTag();
bindTag2.doEndTag();
BindTag bindTag3 = new BindTag();
bindTag3.setPageContext(pc);
bindTag3.setPath("tb");
bindTag3.doStartTag();
bindTag3.doEndTag();
formTag.doEndTag();
}
/**
* SPR-4022
*/
@SuppressWarnings("serial")
@Test
public void nestingInFormTag() throws JspException {
PageContext pc = createPageContext();
TestBean tb = new TestBean();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
ServletRequestDataBinder binder = new ServletRequestDataBinder(tb, "tb");
CustomDateEditor l = new CustomDateEditor(df, true);
binder.registerCustomEditor(Date.class, l);
pc.getRequest().setAttribute(BindingResult.MODEL_KEY_PREFIX + "tb", binder.getBindingResult());
FormTag formTag = new FormTag() {
@Override
protected TagWriter createTagWriter() {
return new TagWriter(new StringWriter());
}
};
String action = "/form.html";
String commandName = "tb";
String name = "formName";
String enctype = "my/enctype";
String method = "POST";
String onsubmit = "onsubmit";
String onreset = "onreset";
String cssClass = "myClass";
String cssStyle = "myStyle";
String acceptCharset = "iso-8859-1";
formTag.setName(name);
formTag.setCssClass(cssClass);
formTag.setCssStyle(cssStyle);
formTag.setAction(action);
formTag.setCommandName(commandName);
formTag.setEnctype(enctype);
formTag.setMethod(method);
formTag.setOnsubmit(onsubmit);
formTag.setOnreset(onreset);
formTag.setAcceptCharset(acceptCharset);
formTag.setPageContext(pc);
formTag.doStartTag();
BindTag bindTag1 = new BindTag();
bindTag1.setPageContext(pc);
bindTag1.setPath("date");
bindTag1.doStartTag();
bindTag1.doEndTag();
BindTag bindTag2 = new BindTag();
bindTag2.setPageContext(pc);
bindTag2.setPath("tb.date");
bindTag2.doStartTag();
bindTag2.doEndTag();
BindTag bindTag3 = new BindTag();
bindTag3.setPageContext(pc);
bindTag3.setPath("tb");
bindTag3.doStartTag();
bindTag3.doEndTag();
formTag.doEndTag();
}
protected TagWriter createTagWriter(){
return new TagWriter(pageContext);
}
protected void writeCustomTagAttributes(TagWriter tagWriter) throws JspException{
}
private void writeHref(TagWriter tagWriter, String linkAddress) throws JspException{
if(encodeUrl){
linkAddress = URLEncoder.SAFE_PARAMS_ENCODER.encode(linkAddress);
}
tagWriter.writeAttribute("href", linkAddress);
}
/**
* {@inheritDoc}
*/
@Override
protected int writeTagContent(TagWriter tagWriter) throws JspException {
return EVAL_BODY_INCLUDE;
}