【问题标题】:Spring <form:select> tag and command object did not matchSpring <form:select> 标签和命令对象不匹配
【发布时间】:2025-12-31 15:15:07
【问题描述】:

我在我的项目中使用弹簧。由于 spring 自动填充来自命令对象的表单字段。有一个组合框案例,其中命令对象的值为 newtypename(小写),而填充组合框的列表的名称为 NewTypeName(驼峰式)。这些值不匹配,我的组合框值没有自动选择。

当我设置具有值 NewTypeName 的命令对象时;它匹配,并且在组合框中选择了加载此值的表单。

<form:select multiple="single" path="pluginType" id="pluginType" cssClass="dropDownSelect-small" tabindex="3" onchange="changeState()">
    <form:option value="0" label="Select" />
    <form:options items="${pluginTypeList}" />
</form:select>

我怎样才能实现所有案例都运行完美的情况,即无论我输入 lowerCase 还是 camel Case。我应该在组合框中选择该值。

【问题讨论】:

  • Java 确实区分大小写
  • 是的;但是如何处理这个问题:(
  • @NimChimpsky:问题已更新。

标签: java forms spring jsp spring-mvc


【解决方案1】:

我想我明白你在这里想要做什么......

选项 1:如果您可以更改选项列表中的值,那将是一种方法:

<form:options items="${fn.toLowerCase(pluginTypeList)}" />

这需要加载 JSTL 函数库。

您很可能不能只更改这些值,因为应用程序已在使用中。

选项 2:使选项的值控制显示值的小写版本。 这将需要更改表单的处理逻辑。

选项 3:您需要实现一个“to camel case”方法,这似乎是一个杂项。

【讨论】:

    【解决方案2】:

    由于 JAVA 区分大小写,因此命令对象具有值 newtypename (lowerCase) 的组合框大小写问题和填充组合框的列表具有此名称作为 NewTypeName (camelCase) 已通过业务逻辑修复。

    【讨论】: