2016-04-25 55 views
0

我试图修改一个Java阵列的<input>标签内JSP修改Java数组

String[] userProperties = {"one", "two", "three"}; 
String[] propValues = new String[userProperties.length]; 
. 
. 
. 

<% for(int i = 0; i < userProperties.length; i++) { %> 
    <tr>   
     <td> 
      <input type="text" size="30" maxlength="150" name="<%=propValues[i]%>" value="somevalue"> 
     </td> 
    </tr> 
<% } %> 
. 
. 
. 

我想为了有在本实施例3点中输入的形式,和各形态,一旦点击提交按钮,用户输入的值将被绑定到propValues数组中的适当位置。我正在修改这个基于name设置为本地Java变量的旧代码,并且它能够成功修改该变量。这对于JSP中的数组不可行吗?我知道JSTL有一个<c:forEach>的标签,这使得它更简单,但由于我正在使用一个相当老的代码库中的单个文件,所以我想保持它访问的库一致。这可能使用<%> Java代码块吗?

回答

0
//length will 3 but initialize with default value null. 
String[] propValues = new String[userProperties.length]; 

你正在试图做的是要初始化变量userProperties并尝试访问数组变量propValues实际上包含null

name="<%=propValues[i]%>" // set your name as a null. 

因此,所有你的三个input有同名null。不如试试这个代码

<input type="text" size="30" maxlength="150" name="<%=userProperties[i]%>" value="somevalue"> 

,而不是

<input type="text" size="30" maxlength="150" name="<%=propValues[i]%>" value="somevalue"> 
+0

感谢您的评论!那么我可能从根本上误解了JSP如何工作。我试图通过输入表单为'userProp [i]'分配一个值,所以如果我做了你所建议的改变,它会修改数组'userProperties'的元素吗?如果是这样,你是否建议我将'userProp'初始化为3个空白字符串的数组? –