Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一个下拉菜单中传递多个值?_Java_Html_Jsp - Fatal编程技术网

Java 如何在一个下拉菜单中传递多个值?

Java 如何在一个下拉菜单中传递多个值?,java,html,jsp,Java,Html,Jsp,我试图同时传递artistName和artistId的值,以允许将这两个字段写入表中。我需要两个值来允许artistName上的超链接查询单个艺术家。artistId字段是artists表的主键,也是albums表的外键 有没有一种方法可以创建一个双值名称,使我能够轻松地将这两个值彼此分离,并将名称和id同时写入表中,或者有没有一种方法可以将request.getParameter之后的两个字段解析为更有用的内容 这是我在这个领域的经验 JSP 艺术家* 如果您想同时发送艺术家的姓名和ID, 您

我试图同时传递artistName和artistId的值,以允许将这两个字段写入表中。我需要两个值来允许artistName上的超链接查询单个艺术家。artistId字段是artists表的主键,也是albums表的外键

有没有一种方法可以创建一个双值名称,使我能够轻松地将这两个值彼此分离,并将名称和id同时写入表中,或者有没有一种方法可以将request.getParameter之后的两个字段解析为更有用的内容

这是我在这个领域的经验

JSP

艺术家*

如果您想同时发送艺术家的姓名和ID, 您可以做的是,在foreach循环中输入它们时,基本上用“:”分隔它们

因此,当您提交实际表单时,select的值将是artistName:artistID


从这里,您可以拆分“:”上的字符串,将它们作为单独的部分插入到表中。

根据您的评论,我认为这样做可以达到以下目的:

<tr>
    <td><b>Artist*</b></td>
    <td>
        <select name="artistName">
        <c:forEach items="${Artists}" var="Artist">
            <option <c:out value="${Artist.artistId}"/>>${Artist.artistName}</option>
        </c:forEach>
        </select>
    </td>
</tr>

艺术家*
${Artist.artistName}
请注意,我本人并不喜欢Java/JSP,因此我不确定语法,但id是在选项标记内输入
属性。我认为这是您的问题,但是如果没有HTML输出源的副本,就很难确定。
还请注意,您问题的标题对您的目标有误导性。正如我在评论中所说,实际上不需要(至少不需要从我看到的地方)传递多个值,只需要艺术家id。

我不明白。。。如果你已经发送了id,那么你为什么还要发送这个名字,这样你以后就可以通过一个简单的连接来检索这个名字了?我对这个有点陌生,正在努力学习。如果我不知道更好的方法,请原谅我,这是问的重点。扩展您的想法会更有帮助。通常,如果有人在下拉列表中选择一位艺术家(姓名),发送和存储的值将是该艺术家的id。这基本上就是您需要存储在要录制的表中的所有内容,由于您已经有了另一个表,其中您知道艺术家的详细信息,当然还有id。因此,您应该将选项的值设置为仅艺术家id,并将文本设置为艺术家的名称,因为您的用户可能对id不感兴趣……将此forEach下拉菜单与我以前使用的其他下拉菜单进行比较,其中,正在传递的值在左侧标记为该值,然后是页面上显示的右侧显示值,如下所示。。。现在,如果我遵循这个模式,我应该显示艺人姓名,但传递艺人ID的是${Artist.artistName}…但是我有一个ID和名称的显示。有没有办法隐藏身份证?我试过了,也许我不知道你是怎么想的。它不起作用。我可以知道你用什么技术把它传给数据库吗?由于这是生成的HTML,所以可以通过AJAX请求等来完成。在每个字段的request.getParameter之后,我使用Hibernate来保存。。。Session Session=sessionFactory.openSession();事务tx=会话.beginTransaction();相册相册=新相册();专辑。集艺术家(艺术家);albums.setAlbumTitle(albumTitle);专辑。setYearReleased(yearReleased);此处为空日期字段的默认值。。。专辑。setYearReleased(yearReleased2);}专辑。集流派(流派);相册。设置标签(标签);albums.setAlbumType(albumType);专辑集制作人(制作人);保存(相册);tx.commit();session.close();
<tr>
    <td><b>Artist*</b></td>
    <td>
        <select name="artistName">
        <c:forEach items="${Artists}" var="Artist">
            <option <c:out value="${Artist.artistId}"/>>${Artist.artistName}</option>
        </c:forEach>
        </select>
    </td>
</tr>