我需要在JSP页面中添加多个select下拉列表,在单个字段中将多个值保存到数据库中,并在返回JSP页面时获得多选以显示“selected”值。
怎么可能?我能够将多个选定值保存在变量中,但无法将其保存在表中。
提前感谢任何帮助。
function AssetDistribution() {
}
function getMultiSelectValue(select) {
return [].reduce.call(select.options, function(values, option) {
option.selected ? values.push(option.label) : null;
return values;
}, []);
}
function showValues(values) {
document.forms[0].custom2.value = values.join(' , ');
}
<select id="custom2" name="custom2" multiple="multiple" runat="server" onchange="AssetDistribution();showValues(getMultiSelectValue(this));">
<option label="PC" id='asset0' value="1000">PC</option>
<option label="Laptop" id='asset1' value="1200">Laptop</option>
<option label="Microsoft office" id='asset2' value="140">MS office</option>
<option label="Software" id='asset3' value="0">Software</option>
<option label="MSDN" id='asset4' value="2400">MSDN</option>
<option label="Mac laptop" id='asset5' value="1900">Mac laptop</option>
<option label="No" id='asset6' value="0">No</option>
<html:text styleClass="verdana9bld" property="custom2" size="10" disabled='true'/>
</select>
答案 0 :(得分:0)
由于您在数组中添加了选定的值,因此我假设您要将所有值存储在单个列中作为逗号分隔值。如果是这样,您可以使用下面的代码。
此代码可用于servlet,
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String[] assets = request.getParameterValues("custom2");
try {
//For MS SQL Server connection
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
//Provided default port and username, password
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks",
"root", "root");
Statement st = conn.createStatement();
st.executeUpdate("insert into Table_Name(Column_Name) values('" + assets + "')");
stmt.close();
con.close();
request.setAttribute("selectedAssets", assets); // Will be available as ${selectedAssets} in JSP
request.getRequestDispatcher("/WEB-INF/home.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
在web.xml中。假设servlet名称是myServlet(你可以给你的值),
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>myServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myServlet</url-pattern>
</servlet-mapping>
修改强>
请找到更新后的脚本,预先选择包含来自请求的值的下拉列表。
// Get the values from request and store it in JS array
var valArray = [1000,1900];
//Pass the element and array to the function.
setSelectedIndex(document.getElementById("custom2"),valArray);
//Function which selects the given array on page loading.
function setSelectedIndex(s, arr){
for(i=0; i<s.length; i++){
for(j=0; j<arr.length; j++){
if(s[i].value == arr[j]){
s.options[i].selected = true;
}
}
}
return;
}
请找到 Working Demo
如果这有帮助,请告诉我。
干杯..!