当前位置: 首页 > 知识库问答 >
问题:

使用Spring MVC修剪Thymeleaf中的输入值

竺勇
2023-03-14

我想知道如何在使用Thymeleaf将输入值发送到控制器之前修剪输入值?

我使用Spring MVC和Thymeleaf作为模板引擎。

下面是我表格的代码:

<form id="collabForm" method="post" action="#" th:action="@{/collaborateurs/add}" role="form" th:object="${newCollaborateur}">
  <div class="box-body">
    <div class="form-group col-sm-6 col-md-4 col-lg-4">
      <label for="nomCollab">Nom</label>
      <input id="nomCollab" class="form-control" name="nom" type="text" placeholder="Saisir le nom" th:field="*{nom}" required="required"/>
    </div>
  </div>
</form>  

谢谢!

共有2个答案

郑功
2023-03-14

您可以使用Spring StringTrimmerEditor:

public abstract class BaseController // your super controller class

    @InitBinder
    public void initBinder(final WebDataBinder binder) {

        final StringTrimmerEditor stringtrimmer = 
            new StringTrimmerEditor(true);
        binder.registerCustomEditor(String.class, stringtrimmer);
    }
}
施海
2023-03-14

我的解决方案

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;

import java.beans.PropertyEditorSupport;
import java.io.IOException;

@ControllerAdvice
public class StringTrimModule extends PropertyEditorSupport {

    @Component
    public class JsonStringTrimModule extends SimpleModule {
        public JsonStringTrimModule() {
            addDeserializer(String.class, new StdDeserializer<String>(String.class) {
                @Override
                public String deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException, JsonProcessingException {
                    switch (jsonParser.getCurrentName()) {
                        case "password":
                            return _parseString(jsonParser, context);
                        default:
                            return trim(_parseString(jsonParser, context));
                    }
                }
            });

            addSerializer(String.class, new StdSerializer<String>(String.class) {
                @Override
                public void serialize(String value, JsonGenerator gen, SerializerProvider provider) throws IOException {
                    gen.writeString(trim(value));
                }
            });
        }
    }

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.setDisallowedFields("*password");
        binder.registerCustomEditor(String.class, this);
    }

    @Override
    public void setAsText(@Nullable String text) {
        if (text == null) {
            setValue(null);
        } else {
            String value = trim(text);
            if ("".equals(value)) {
                setValue(null);
            } else {
                setValue(value);
            }
        }
    }

    private String trim(String value) {
        return value.trim().replaceAll("( )+", " ");
    }
}
 类似资料:
  • 我试着从一个实体类中验证两个字段,它有两个字段:name和price,但字符串和我都试着从每个@notblank打印消息(消息=“...”)输入字段下的表单。但我有以下错误: 对象“food DTO”中字段“name”上的字段错误:拒绝值[];代码[notblank.fooddto.name,notblank.name,notblank.java.lang.String,notblank];参数[

  • 我怎么能访问变量我添加到模型中的Spring MVC内胸腺模板?我有以下控制器代码: 如何访问thymeleaf模板中的变量var1、var5、var6等?

  • 如何验证输入,以便当输入为空时弹出消息

  • 我需要向我的实体添加日期,并让用户在web表单中设置它。默认情况下,该字段需要填写今天的日期。 显示为默认值设置的正确日期 显示没有任何值的日期选择器(注意:String startDate=“2016-08-01”;) 生成 400 错误(错误请求)(注意:开始日期 = 新日期 ();) 那么,问题是:如何使用胸膜输入日期? 我可以使用Date()数据类型输入和存储这些数据吗 我需要如何在表单中

  • 本文向大家介绍SpringMVC中使用Thymeleaf模板引擎实例代码,包括了SpringMVC中使用Thymeleaf模板引擎实例代码的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是SpringMVC中使用Thymeleaf模板引擎的相关内容,具体介绍如下。 Thymeleaf提供了一组Spring集成,允许您将其用作Spring MVC应用程序中全面替代JSP的功能。 Maven依

  • 我试图测试我的Spring MVC控制器,但我不断收到与Thymeleaf模板相关的错误。我真的不想在控制器测试中处理模板错误,因为这不是我真正感兴趣的。当模板不存在时让测试失败是可以的,但现在我收到了与根据错误代码找不到消息相关的错误。 当我运行应用程序时,这个问题不存在。我一直在尝试弄清楚如何设置测试环境来解决这个问题,但在那里我找不到任何有效的方法。现在,我只是真的想让控制器代码正常工作。