Browse Source

Polishing

pull/1876/head
Juergen Hoeller 8 years ago
parent
commit
fa8acfafbf
  1. 2
      spring-aspects/src/main/java/org/springframework/transaction/aspectj/JtaAnnotationTransactionAspect.aj
  2. 10
      spring-core/src/main/java/org/springframework/core/convert/support/ConversionUtils.java
  3. 52
      spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java
  4. 2
      spring-core/src/main/java/org/springframework/util/StringUtils.java
  5. 130
      spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java
  6. 8
      spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java
  7. 5
      spring-test/src/main/java/org/springframework/test/web/client/AbstractRequestExpectationManager.java
  8. 21
      spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java
  9. 6
      spring-webmvc/src/main/java/org/springframework/web/servlet/resource/VersionResourceResolver.java
  10. 60
      spring-webmvc/src/main/resources/org/springframework/web/servlet/view/freemarker/spring.ftl

2
spring-aspects/src/main/java/org/springframework/transaction/aspectj/JtaAnnotationTransactionAspect.aj

@ -45,7 +45,7 @@ import org.springframework.transaction.annotation.AnnotationTransactionAttribute @@ -45,7 +45,7 @@ import org.springframework.transaction.annotation.AnnotationTransactionAttribute
* @see javax.transaction.Transactional
* @see AnnotationTransactionAspect
*/
@RequiredTypes({"javax.transaction.Transactional"})
@RequiredTypes("javax.transaction.Transactional")
public aspect JtaAnnotationTransactionAspect extends AbstractTransactionAspect {
public JtaAnnotationTransactionAspect() {

10
spring-core/src/main/java/org/springframework/core/convert/support/ConversionUtils.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -59,14 +59,12 @@ abstract class ConversionUtils { @@ -59,14 +59,12 @@ abstract class ConversionUtils {
// yes
return true;
}
else if (sourceElementType.getType().isAssignableFrom(targetElementType.getType())) {
if (sourceElementType.getType().isAssignableFrom(targetElementType.getType())) {
// maybe
return true;
}
else {
// no
return false;
}
// no
return false;
}
public static Class<?> getEnumType(Class<?> targetType) {

52
spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java

@ -71,146 +71,146 @@ public abstract class MimeTypeUtils { @@ -71,146 +71,146 @@ public abstract class MimeTypeUtils {
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
*/
@Deprecated
public final static MimeType APPLICATION_ATOM_XML;
public static final MimeType APPLICATION_ATOM_XML;
/**
* A String equivalent of {@link MimeTypeUtils#APPLICATION_ATOM_XML}.
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
*/
@Deprecated
public final static String APPLICATION_ATOM_XML_VALUE = "application/atom+xml";
public static final String APPLICATION_ATOM_XML_VALUE = "application/atom+xml";
/**
* Public constant mime type for {@code application/x-www-form-urlencoded}.
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
* */
@Deprecated
public final static MimeType APPLICATION_FORM_URLENCODED;
public static final MimeType APPLICATION_FORM_URLENCODED;
/**
* A String equivalent of {@link MimeTypeUtils#APPLICATION_FORM_URLENCODED}.
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
*/
@Deprecated
public final static String APPLICATION_FORM_URLENCODED_VALUE = "application/x-www-form-urlencoded";
public static final String APPLICATION_FORM_URLENCODED_VALUE = "application/x-www-form-urlencoded";
/**
* Public constant mime type for {@code application/json}.
* */
public final static MimeType APPLICATION_JSON;
public static final MimeType APPLICATION_JSON;
/**
* A String equivalent of {@link MimeTypeUtils#APPLICATION_JSON}.
*/
public final static String APPLICATION_JSON_VALUE = "application/json";
public static final String APPLICATION_JSON_VALUE = "application/json";
/**
* Public constant mime type for {@code application/octet-stream}.
* */
public final static MimeType APPLICATION_OCTET_STREAM;
public static final MimeType APPLICATION_OCTET_STREAM;
/**
* A String equivalent of {@link MimeTypeUtils#APPLICATION_OCTET_STREAM}.
*/
public final static String APPLICATION_OCTET_STREAM_VALUE = "application/octet-stream";
public static final String APPLICATION_OCTET_STREAM_VALUE = "application/octet-stream";
/**
* Public constant mime type for {@code application/xhtml+xml}.
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
*/
@Deprecated
public final static MimeType APPLICATION_XHTML_XML;
public static final MimeType APPLICATION_XHTML_XML;
/**
* A String equivalent of {@link MimeTypeUtils#APPLICATION_XHTML_XML}.
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
*/
@Deprecated
public final static String APPLICATION_XHTML_XML_VALUE = "application/xhtml+xml";
public static final String APPLICATION_XHTML_XML_VALUE = "application/xhtml+xml";
/**
* Public constant mime type for {@code application/xml}.
*/
public final static MimeType APPLICATION_XML;
public static final MimeType APPLICATION_XML;
/**
* A String equivalent of {@link MimeTypeUtils#APPLICATION_XML}.
*/
public final static String APPLICATION_XML_VALUE = "application/xml";
public static final String APPLICATION_XML_VALUE = "application/xml";
/**
* Public constant mime type for {@code image/gif}.
*/
public final static MimeType IMAGE_GIF;
public static final MimeType IMAGE_GIF;
/**
* A String equivalent of {@link MimeTypeUtils#IMAGE_GIF}.
*/
public final static String IMAGE_GIF_VALUE = "image/gif";
public static final String IMAGE_GIF_VALUE = "image/gif";
/**
* Public constant mime type for {@code image/jpeg}.
*/
public final static MimeType IMAGE_JPEG;
public static final MimeType IMAGE_JPEG;
/**
* A String equivalent of {@link MimeTypeUtils#IMAGE_JPEG}.
*/
public final static String IMAGE_JPEG_VALUE = "image/jpeg";
public static final String IMAGE_JPEG_VALUE = "image/jpeg";
/**
* Public constant mime type for {@code image/png}.
*/
public final static MimeType IMAGE_PNG;
public static final MimeType IMAGE_PNG;
/**
* A String equivalent of {@link MimeTypeUtils#IMAGE_PNG}.
*/
public final static String IMAGE_PNG_VALUE = "image/png";
public static final String IMAGE_PNG_VALUE = "image/png";
/**
* Public constant mime type for {@code multipart/form-data}.
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
*/
@Deprecated
public final static MimeType MULTIPART_FORM_DATA;
public static final MimeType MULTIPART_FORM_DATA;
/**
* A String equivalent of {@link MimeTypeUtils#MULTIPART_FORM_DATA}.
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
*/
@Deprecated
public final static String MULTIPART_FORM_DATA_VALUE = "multipart/form-data";
public static final String MULTIPART_FORM_DATA_VALUE = "multipart/form-data";
/**
* Public constant mime type for {@code text/html}.
* */
public final static MimeType TEXT_HTML;
public static final MimeType TEXT_HTML;
/**
* A String equivalent of {@link MimeTypeUtils#TEXT_HTML}.
*/
public final static String TEXT_HTML_VALUE = "text/html";
public static final String TEXT_HTML_VALUE = "text/html";
/**
* Public constant mime type for {@code text/plain}.
* */
public final static MimeType TEXT_PLAIN;
public static final MimeType TEXT_PLAIN;
/**
* A String equivalent of {@link MimeTypeUtils#TEXT_PLAIN}.
*/
public final static String TEXT_PLAIN_VALUE = "text/plain";
public static final String TEXT_PLAIN_VALUE = "text/plain";
/**
* Public constant mime type for {@code text/xml}.
* */
public final static MimeType TEXT_XML;
public static final MimeType TEXT_XML;
/**
* A String equivalent of {@link MimeTypeUtils#TEXT_XML}.
*/
public final static String TEXT_XML_VALUE = "text/xml";
public static final String TEXT_XML_VALUE = "text/xml";
static {

2
spring-core/src/main/java/org/springframework/util/StringUtils.java

@ -638,7 +638,7 @@ public abstract class StringUtils { @@ -638,7 +638,7 @@ public abstract class StringUtils {
String prefix = "";
if (prefixIndex != -1) {
prefix = pathToUse.substring(0, prefixIndex + 1);
if (prefix.contains("/")) {
if (prefix.contains(FOLDER_SEPARATOR)) {
prefix = "";
}
else {

130
spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java

@ -339,68 +339,68 @@ public class CodeFlow implements Opcodes { @@ -339,68 +339,68 @@ public class CodeFlow implements Opcodes {
public static void insertAnyNecessaryTypeConversionBytecodes(MethodVisitor mv, char targetDescriptor, String stackDescriptor) {
if (CodeFlow.isPrimitive(stackDescriptor)) {
char stackTop = stackDescriptor.charAt(0);
if (stackTop=='I' || stackTop=='B' || stackTop=='S' || stackTop=='C') {
if (targetDescriptor=='D') {
if (stackTop == 'I' || stackTop == 'B' || stackTop == 'S' || stackTop == 'C') {
if (targetDescriptor == 'D') {
mv.visitInsn(I2D);
}
else if (targetDescriptor=='F') {
else if (targetDescriptor == 'F') {
mv.visitInsn(I2F);
}
else if (targetDescriptor=='J') {
else if (targetDescriptor == 'J') {
mv.visitInsn(I2L);
}
else if (targetDescriptor=='I') {
else if (targetDescriptor == 'I') {
// nop
}
else {
throw new IllegalStateException("cannot get from "+stackTop+" to "+targetDescriptor);
}
}
else if (stackTop=='J') {
if (targetDescriptor=='D') {
else if (stackTop == 'J') {
if (targetDescriptor == 'D') {
mv.visitInsn(L2D);
}
else if (targetDescriptor=='F') {
else if (targetDescriptor == 'F') {
mv.visitInsn(L2F);
}
else if (targetDescriptor=='J') {
else if (targetDescriptor == 'J') {
// nop
}
else if (targetDescriptor=='I') {
else if (targetDescriptor == 'I') {
mv.visitInsn(L2I);
}
else {
throw new IllegalStateException("cannot get from "+stackTop+" to "+targetDescriptor);
}
}
else if (stackTop=='F') {
if (targetDescriptor=='D') {
else if (stackTop == 'F') {
if (targetDescriptor == 'D') {
mv.visitInsn(F2D);
}
else if (targetDescriptor=='F') {
else if (targetDescriptor == 'F') {
// nop
}
else if (targetDescriptor=='J') {
else if (targetDescriptor == 'J') {
mv.visitInsn(F2L);
}
else if (targetDescriptor=='I') {
else if (targetDescriptor == 'I') {
mv.visitInsn(F2I);
}
else {
throw new IllegalStateException("cannot get from "+stackTop+" to "+targetDescriptor);
}
}
else if (stackTop=='D') {
if (targetDescriptor=='D') {
else if (stackTop == 'D') {
if (targetDescriptor == 'D') {
// nop
}
else if (targetDescriptor=='F') {
else if (targetDescriptor == 'F') {
mv.visitInsn(D2F);
}
else if (targetDescriptor=='J') {
else if (targetDescriptor == 'J') {
mv.visitInsn(D2L);
}
else if (targetDescriptor=='I') {
else if (targetDescriptor == 'I') {
mv.visitInsn(D2I);
}
else {
@ -521,24 +521,27 @@ public class CodeFlow implements Opcodes { @@ -521,24 +521,27 @@ public class CodeFlow implements Opcodes {
}
/**
* Determine whether the descriptor is for a boolean primitive or boolean reference type.
* @param descriptor type descriptor
* @return {@code true} if the descriptor is for a boolean primitive or boolean reference type
* @return {@code true} if the descriptor is boolean compatible
*/
public static boolean isBooleanCompatible(String descriptor) {
return (descriptor != null && (descriptor.equals("Z") || descriptor.equals("Ljava/lang/Boolean")));
}
/**
* Determine whether the descriptor is for a primitive type.
* @param descriptor type descriptor
* @return {@code true} if the descriptor is for a primitive type
* @return {@code true} if a primitive type
*/
public static boolean isPrimitive(String descriptor) {
return (descriptor != null && descriptor.length() == 1);
}
/**
* Determine whether the descriptor is for a primitive array (e.g. "[[I").
* @param descriptor the descriptor for a possible primitive array
* @return {@code true} if the descriptor is for a primitive array (e.g. "[[I")
* @return {@code true} if the descriptor a primitive array
*/
public static boolean isPrimitiveArray(String descriptor) {
boolean primitive = true;
@ -554,8 +557,8 @@ public class CodeFlow implements Opcodes { @@ -554,8 +557,8 @@ public class CodeFlow implements Opcodes {
}
/**
* Determine if boxing/unboxing can get from one type to the other. Assumes at least
* one of the types is in boxed form (i.e. single char descriptor).
* Determine whether boxing/unboxing can get from one type to the other.
* Assumes at least one of the types is in boxed form (i.e. single char descriptor).
* @return {@code true} if it is possible to get (via boxing) from one descriptor to the other
*/
public static boolean areBoxingCompatible(String desc1, String desc2) {
@ -891,16 +894,33 @@ public class CodeFlow implements Opcodes { @@ -891,16 +894,33 @@ public class CodeFlow implements Opcodes {
public static void insertArrayStore(MethodVisitor mv, String arrayElementType) {
if (arrayElementType.length()==1) {
switch (arrayElementType.charAt(0)) {
case 'I': mv.visitInsn(IASTORE); break;
case 'J': mv.visitInsn(LASTORE); break;
case 'F': mv.visitInsn(FASTORE); break;
case 'D': mv.visitInsn(DASTORE); break;
case 'B': mv.visitInsn(BASTORE); break;
case 'C': mv.visitInsn(CASTORE); break;
case 'S': mv.visitInsn(SASTORE); break;
case 'Z': mv.visitInsn(BASTORE); break;
case 'I':
mv.visitInsn(IASTORE);
break;
case 'J':
mv.visitInsn(LASTORE);
break;
case 'F':
mv.visitInsn(FASTORE);
break;
case 'D':
mv.visitInsn(DASTORE);
break;
case 'B':
mv.visitInsn(BASTORE);
break;
case 'C':
mv.visitInsn(CASTORE);
break;
case 'S':
mv.visitInsn(SASTORE);
break;
case 'Z':
mv.visitInsn(BASTORE);
break;
default:
throw new IllegalArgumentException("Unexpected arraytype "+arrayElementType.charAt(0));
throw new IllegalArgumentException(
"Unexpected arraytype " + arrayElementType.charAt(0));
}
}
else {
@ -929,14 +949,16 @@ public class CodeFlow implements Opcodes { @@ -929,14 +949,16 @@ public class CodeFlow implements Opcodes {
}
/**
* @return true if the supplied array type has a core component reference type
* Return if the supplied array type has a core component reference type.
*/
public static boolean isReferenceTypeArray(String arraytype) {
int length = arraytype.length();
for (int i = 0; i < length; i++) {
char ch = arraytype.charAt(i);
if (ch == '[') continue;
return ch=='L';
if (ch == '[') {
continue;
}
return (ch == 'L');
}
return false;
}
@ -991,18 +1013,6 @@ public class CodeFlow implements Opcodes { @@ -991,18 +1013,6 @@ public class CodeFlow implements Opcodes {
}
}
public interface FieldAdder {
void generateField(ClassWriter cw, CodeFlow codeflow);
}
public interface ClinitAdder {
void generateCode(MethodVisitor mv, CodeFlow codeflow);
}
public static String toBoxedDescriptor(String primitiveDescriptor) {
switch (primitiveDescriptor.charAt(0)) {
case 'I': return "Ljava/lang/Integer";
@ -1015,7 +1025,27 @@ public class CodeFlow implements Opcodes { @@ -1015,7 +1025,27 @@ public class CodeFlow implements Opcodes {
case 'Z': return "Ljava/lang/Boolean";
default:
throw new IllegalArgumentException("Unexpected non primitive descriptor "+primitiveDescriptor);
}
}
}
/**
* Interface used to generate fields.
*/
@FunctionalInterface
public interface FieldAdder {
void generateField(ClassWriter cw, CodeFlow codeflow);
}
/**
* Interface used to generate {@code clinit} static initializer blocks.
*/
@FunctionalInterface
public interface ClinitAdder {
void generateCode(MethodVisitor mv, CodeFlow codeflow);
}
}

8
spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -208,7 +208,7 @@ public class OpPlus extends Operator { @@ -208,7 +208,7 @@ public class OpPlus extends Operator {
@Override
public void generateCode(MethodVisitor mv, CodeFlow cf) {
if (this.exitTypeDescriptor == "Ljava/lang/String") {
if ("Ljava/lang/String".equals(this.exitTypeDescriptor)) {
mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V", false);
@ -233,12 +233,12 @@ public class OpPlus extends Operator { @@ -233,12 +233,12 @@ public class OpPlus extends Operator {
case 'J':
mv.visitInsn(LADD);
break;
case 'F':
case 'F':
mv.visitInsn(FADD);
break;
case 'D':
mv.visitInsn(DADD);
break;
break;
default:
throw new IllegalStateException(
"Unrecognized exit type descriptor: '" + this.exitTypeDescriptor + "'");

5
spring-test/src/main/java/org/springframework/test/web/client/AbstractRequestExpectationManager.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -199,6 +199,9 @@ public abstract class AbstractRequestExpectationManager implements RequestExpect @@ -199,6 +199,9 @@ public abstract class AbstractRequestExpectationManager implements RequestExpect
}
}
/**
* Reset all expectations for this group.
*/
public void reset() {
getExpectations().clear();
}

21
spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -57,7 +57,7 @@ public class GzipResourceResolver extends AbstractResourceResolver { @@ -57,7 +57,7 @@ public class GzipResourceResolver extends AbstractResourceResolver {
}
}
catch (IOException ex) {
logger.trace("No gzipped resource for [" + resource.getFilename() + "]", ex);
logger.trace("No gzip resource for [" + resource.getFilename() + "]", ex);
}
return resource;
@ -69,8 +69,8 @@ public class GzipResourceResolver extends AbstractResourceResolver { @@ -69,8 +69,8 @@ public class GzipResourceResolver extends AbstractResourceResolver {
}
@Override
protected String resolveUrlPathInternal(String resourceUrlPath, List<? extends Resource> locations,
ResourceResolverChain chain) {
protected String resolveUrlPathInternal(String resourceUrlPath,
List<? extends Resource> locations, ResourceResolverChain chain) {
return chain.resolveUrlPath(resourceUrlPath, locations);
}
@ -87,54 +87,67 @@ public class GzipResourceResolver extends AbstractResourceResolver { @@ -87,54 +87,67 @@ public class GzipResourceResolver extends AbstractResourceResolver {
this.gzipped = original.createRelative(original.getFilename() + ".gz");
}
@Override
public InputStream getInputStream() throws IOException {
return this.gzipped.getInputStream();
}
@Override
public boolean exists() {
return this.gzipped.exists();
}
@Override
public boolean isReadable() {
return this.gzipped.isReadable();
}
@Override
public boolean isOpen() {
return this.gzipped.isOpen();
}
@Override
public URL getURL() throws IOException {
return this.gzipped.getURL();
}
@Override
public URI getURI() throws IOException {
return this.gzipped.getURI();
}
@Override
public File getFile() throws IOException {
return this.gzipped.getFile();
}
@Override
public long contentLength() throws IOException {
return this.gzipped.contentLength();
}
@Override
public long lastModified() throws IOException {
return this.gzipped.lastModified();
}
@Override
public Resource createRelative(String relativePath) throws IOException {
return this.gzipped.createRelative(relativePath);
}
@Override
public String getFilename() {
return this.original.getFilename();
}
@Override
public String getDescription() {
return this.gzipped.getDescription();
}
@Override
public String getContentEncoding() {
return "gzip";
}

6
spring-webmvc/src/main/java/org/springframework/web/servlet/resource/VersionResourceResolver.java

@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@ -304,12 +304,12 @@ public class VersionResourceResolver extends AbstractResourceResolver { @@ -304,12 +304,12 @@ public class VersionResourceResolver extends AbstractResourceResolver {
@Override
public String getDescription() {
return original.getDescription();
return this.original.getDescription();
}
@Override
public InputStream getInputStream() throws IOException {
return original.getInputStream();
return this.original.getInputStream();
}
@Override

60
spring-webmvc/src/main/resources/org/springframework/web/servlet/view/freemarker/spring.ftl

@ -109,9 +109,9 @@ @@ -109,9 +109,9 @@
* spring.status : a BindStatus instance holding the command object name,
* expression, value, and error messages and codes for the path supplied
*
* @param path : the path (string value) of the value required to bind to.
* Spring defaults to a command name of "command" but this can be overridden
* by user config.
* @param path the path (string value) of the value required to bind to.
* Spring defaults to a command name of "command" but this can be
* overridden by user configuration.
-->
<#macro bind path>
<#if htmlEscape?exists>
@ -152,8 +152,8 @@ @@ -152,8 +152,8 @@
* of a command or bean.
*
* @param path the name of the field to bind to
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formInput path attributes="" fieldType="text">
<@bind path/>
@ -169,8 +169,8 @@ @@ -169,8 +169,8 @@
* of 'password'.
*
* @param path the name of the field to bind to
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formPasswordInput path attributes="">
<@formInput path, attributes, "password"/>
@ -184,8 +184,8 @@ @@ -184,8 +184,8 @@
* the formInput macro with a 'type' parameter of 'hidden'.
*
* @param path the name of the field to bind to
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formHiddenInput path attributes="">
<@formInput path, attributes, "hidden"/>
@ -197,8 +197,8 @@ @@ -197,8 +197,8 @@
* Display a text area and bind it to an attribute of a command or bean.
*
* @param path the name of the field to bind to
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formTextarea path attributes="">
<@bind path/>
@ -214,8 +214,8 @@ ${stringStatusValue}</textarea> @@ -214,8 +214,8 @@ ${stringStatusValue}</textarea>
*
* @param path the name of the field to bind to
* @param options a map (value=label) of all the available options
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formSingleSelect path options attributes="">
<@bind path/>
@ -240,8 +240,8 @@ ${stringStatusValue}</textarea> @@ -240,8 +240,8 @@ ${stringStatusValue}</textarea>
*
* @param path the name of the field to bind to
* @param options a map (value=label) of all the available options
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formMultiSelect path options attributes="">
<@bind path/>
@ -260,10 +260,10 @@ ${stringStatusValue}</textarea> @@ -260,10 +260,10 @@ ${stringStatusValue}</textarea>
*
* @param path the name of the field to bind to
* @param options a map (value=label) of all the available options
* @param separator the html tag or other character list that should be used to
* separate each option. Typically '&nbsp;' or '<br>'
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param separator the HTML tag or other character list that should be used to
* separate each option (typically '&nbsp;' or '<br>')
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formRadioButtons path options separator attributes="">
<@bind path/>
@ -281,10 +281,10 @@ ${stringStatusValue}</textarea> @@ -281,10 +281,10 @@ ${stringStatusValue}</textarea>
*
* @param path the name of the field to bind to
* @param options a map (value=label) of all the available options
* @param separator the html tag or other character list that should be used to
* separate each option. Typically '&nbsp;' or '<br>'
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param separator the HTML tag or other character list that should be used to
* separate each option (typically '&nbsp;' or '<br>')
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formCheckboxes path options separator attributes="">
<@bind path/>
@ -303,8 +303,8 @@ ${stringStatusValue}</textarea> @@ -303,8 +303,8 @@ ${stringStatusValue}</textarea>
* Show a single checkbox.
*
* @param path the name of the field to bind to
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
* @param attributes any additional attributes for the element
* (such as class or CSS styles or size)
-->
<#macro formCheckbox path attributes="">
<@bind path />
@ -320,12 +320,12 @@ ${stringStatusValue}</textarea> @@ -320,12 +320,12 @@ ${stringStatusValue}</textarea>
* Show validation errors for the currently bound field, with
* optional style attributes.
*
* @param separator the html tag or other character list that should be used to
* separate each option. Typically '<br>'.
* @param separator the HTML tag or other character list that should be used to
* separate each option (typically '&nbsp;' or '<br>')
* @param classOrStyle either the name of a CSS class element (which is defined in
* the template or an external CSS file) or an inline style. If the value passed in here
* contains a colon (:) then a 'style=' attribute will be used, else a 'class=' attribute
* will be used.
* the template or an external CSS file) or an inline style. If the value passed
* in here contains a colon (:) then a 'style=' attribute will be used,
* otherwise a 'class=' attribute will be used.
-->
<#macro showErrors separator classOrStyle="">
<#list status.errorMessages as error>

Loading…
Cancel
Save