【问题标题】:form:select returning a comma separated listform:select 返回一个逗号分隔的列表
【发布时间】:2015-03-19 09:56:47
【问题描述】:

昨天早上有人指导我使用 spring MVC 表单 tld,从那以后我一直在努力做一个看起来非常简单的任务!它看起来像一个简单的解决方案,但我似乎无法做到正确。我在想我一定是误解了一些非常基本的东西,无法让它发挥作用。我想知道是否有人可以指出我哪里出错了?

目前我要做的就是在 jsp 选择中显示值列表。
模型实体非常简单(我意识到需要一点微调)

@Entity
@Table(name = "user")
public class User {

@Id  private String userId; 
private String userName;
private String passwordCode;
private Date dateOfBirth;

public String getUserId() {
    return userId;
}

public String getUserName() {
    return userName;
}

public String get PasswordCode () {
    return passwordCode;
}

public Date getDateofBirth() {
    return dateOfBirth;
}
}

我的控制器目前也很简单

@Controller
@RequestMapping("/")
public class HomeController  extends JFrame { 

@Autowired private MeetingDAO meetingDAO;

@RequestMapping(method = RequestMethod.GET)
    public String HomePage(Model model) {

        List<User> userlist = userDAO.ListAll();
        model.addAttribute("userlist ", userlist);
        model.addAttribute("User", new User());

        return "Home";
    }

我通过在堆栈溢出上使用另一个 q/a 得到了这么多,我想知道这是否是我误解的根源。我一直将值列表作为属性传递。这样做时我遇到了很多错误,直到我意识到我还需要“传递”用户模型,以便 jsp 中的弹簧标签能够理解用户对象的结构。这意味着我现在要传递 2 个属性 - 用户,因为我理解它只是为了让表单理解结构(尽管如果我更聪明的话,这也会返回所选对象?)和用户列表,它是实际数据。

在jsp中

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<body>

    <h2>Users List Page</h2>

    <form:form action="/home" method="Post" modelAttribute="User" >
        <form:select path="userName">
            <form:options items="${userlist}"/>
        </form:select>

        <input type="submit" id="submit" value="View"/>
    </form:form>
</body>
</html>

为了简单起见,我已将其配对,但尝试了很多东西(itemvalue,itemlabel 等)。此代码返回所有数据,但以逗号分隔的所有值(id、名称、密码、日期)列表形式返回。无论我尝试对路径、项目值等做什么,它都不会只显示一个字段。理想情况下,我希望显示 - userName (userId) - 但在这个阶段我可能会选择 userName!

从我的印象中我的印象是没有连接用户是用户列表中的一个项目。如果我觉得我快接近了,它会抱怨 userId (etc) 不是数组类型的方法(我认为这意味着它正在查看列表),或者如果它似乎已经理解了它没有数据的属性(我猜测意味着它没有选择列表!)。

谁能帮忙!?

只是添加这是我认为我得到的最接近但它抱怨 User 不是 User 的有效属性?

<form:form action="home" method="Post" modelAttribute="User" >
    <form:select path="User" >
        <form:options items="${userlist}" itemValue="userId"  itemLabel="userName" />

    </form:select>
    <input type="submit" id="submit" value="View"/>
 </form:form>

【问题讨论】:

  • 我很抱歉.. 但是您到底在寻找什么? (我假设..您将userlist 属性添加到模型中.. 当您检索它时.. 您在userlist.. 中获得元素的逗号分隔值.. 但您想将它们设置为选择的选项?)
  • 是的,我想在选择列表中使用用户的元素。因此,例如,与其看到“userId1,Bob Hoskins,pwdcode,12/01/2015 00:00:00”(等等),我至少会看到“Bob Hoskins”,理想情况下能够将其设置为“Bob Hoskins” (用户 ID:用户 ID1)”。我想我应该可以通过设置 form:select path 或 form:options itemLabel 属性来做到这一点?谢谢

标签: java jsp spring-mvc


【解决方案1】:
<form:form action="home" method="Post" modelAttribute="User" >
<form:select path="userId" >
    <form:options items="${userlist}" itemValue="userId"  itemLabel="userName" />
</form:select>
<input type="submit" id="submit" value="View"/>

此代码将在 User 对象中设置选定的 userId,您将在发布表单时获得该对象。

path 变量应该绑定到 backing object 属性这里 backing object 是 User 所以你应该绑定它的 userId 属性。

【讨论】:

  • 您能指定要添加的对象作为模型属性吗?我想这是您在问题(代码)中指定的用户对象。
  • 当我这样做时,我收到错误“bean 类 [[Ljava.lang.Object;]: 的无效属性'userId'”。这对我来说似乎很奇怪,好像我放了 path="User" 它至少意识到它应该查看一个 User 对象和 bean 类 [com.org.model.Meeting] 的 Invalid property 'User' 的错误? (抱歉,我分心了,编辑太慢了。)
  • 非常感谢所有的帮助。实际上,虽然这非常有用,但它也让我意识到我已经在错误的地方寻找了 1 - 2 天!当我不是直接从休眠状态从存储过程中填充用户列表时,它实际上并不是会议对象的列表,而是逗号分隔值的列表。抱歉,我没有发布这段代码(或者直到现在再看一遍)。哎哟!
【解决方案2】:

您可以尝试以下设置选项(假设userlistUser 对象的列表,并具有userIduserName 字段):

<c:forEach var="u" items="${userlist}">            
    <form:option item="${u}" itemValue="${u.userId}"  itemLabel="$(u.userName}" />
</c:forEach>

【讨论】:

  • 您的意思是完全反转格式标签吗?这与我之前所做的一致,但我希望让春天的事情顺利进行?!
【解决方案3】:

非常感谢所有的帮助。实际上,虽然这非常有用,但它也让我意识到我已经在错误的地方寻找了 1 - 2 天!当我不是直接从休眠状态从存储过程中填充用户列表时,它实际上并不是会议对象的列表,而是逗号分隔值的列表。抱歉,我没有发布这段代码(或者直到现在再看一遍)。哎哟!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多