java web传值问题(在问!)

lxpandsq 2012-02-20 04:00:08
上次问这个问题,当时修改了传值方式采用方法二可以解决,但此次因为布局的原因必须用方法一进行传值,但是因为value的值是变量,结果就是隐藏域传值传过去的是null,而url方法传值却可以。请教改如何处理?


方法一:<form action="./Tuji" method="post" target="_blank">
<input type=hidden name="bianhao" value="<%=str[i][j]%>" >



方法二:<form action="./Tuji?bianhao=<%=str[i][j]%>" method="post" target="_blank">

jsp页面代码:
<form action="./Tuji" method="post" target="_blank">
<input type=hidden name="leibie" value="xiangxi" >
<table width="750" border="1" align="center" STYLE="table-layout: fixed">
<tr>

<td width="10%">图纸编号</td>
<td width="10%">专业</td>
<td width="15%">设计名称</td>
<td width="10%">图号</td>
<td width="35%">名称</td>
<td width="10%">套数</td>
<td width="10%">存放位置</td>

</tr>
<%
String str[][]=(String[][])request.getAttribute("tujijieguo");
for(int i=0;i<str.length;i++)
{
%>
<tr>
<%
for(int j=0;j<str[0].length;j++)
{
if(!(j==0||j==2||j==6||j==10||j==11||j==12||j==13||j==14))
{
if(j==1)
{
%>
<td><input type=hidden name="bianhao" value="<%=str[i][j]%>" ><input type="radio" name="xuanzhe" value="<%=str[i][j]%>"/><input type="submit" value="<%=str[i][j]%>"></td>
<%
}
else
{
%><td align="left" valign="middle" ><textarea rows="3" cols="35" style= "overflow-y:hidden"><%
out.print(str[i][j]);
%></textarea></td><%
}
}
}
%>
</tr>
<%}%>
<tr>
<td height="37" colspan="3" align="center" valign="middle"><input name="submit" type="submit" value="确定"></td>
<td height="37" colspan="3" align="center" valign="middle"><input name="reset" type="reset" value="借出"></td>
</tr>
</table>
</form>
...全文
295 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这个问题应该是遍历问题使得form表单无法正确接受参数

以前也遇到过、后来通过js弄的

个人愚见:【跟8楼处理差不多】

根据你循环遍历内容 设置一个button 触发一个js函数 把需要的值传递进去
然后设置一个表单【隐藏所有控件】 js会把接受过来的值设置到控件里。 js提交该表单封装给后台处理。


function  getValue(value){

document.getElementById('bianhao').value = value ;

formobject= document.getElementById('form1');
formobject.submit();

}



<form action="./Tuji" method="post" target="_blank" id="form1" name="form1">
<input type=hidden name="bianhao" id="bianhao" value="<%=str[i][j]%>" >
</form>


<!-- 你的遍历-->
<!-- begin -->

<input type="button" value="<%=str[i][j]%>" onclick="getValue('<%=str[i][j]%>');">

<!-- end-->
ilovefzq 2012-02-21
  • 打赏
  • 举报
回复
String str[][]=new String[2][2];
str[0][0]="0-0";
str[0][1]="0-1";
str[1][0]="1-0";
str[1][1]="1-1";
我用这个数组测试了一下,servlet是可以得到值的,应该是你String str[][]=(String[][])request.getAttribute("tujijieguo");
参数的问题,还有一个bug,就是提交到后台的bianhao都是一个值,你要在<input type=hidden name="bianhao" value="<%=str[i][j]%>" >的name做一下处理,因为循环生成了好多name="bianhao"的标签,而servlet只取了第一个

安特矮油 2012-02-21
  • 打赏
  • 举报
回复
估计页面上name为bianhao的组件有多个。
Acesidonu 2012-02-21
  • 打赏
  • 举报
回复
bianhao重名了,传过去是多个值的集合
lxpandsq 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qq737604771 的回复:]
你的form中有多个submit 页面中不知道你到底是那个。 有点会区分。
建议你把<input type="submit" value="<%=str[i][j]%>"> 改成
<input type="button" value="<%=str[i][j]%>" onclick="a(document.getElementById('sub'))">
再写个a函数。
funct……
[/Quote]

我的submit有两个,不论点击那一个都会跳到servlet上,不需要区分的!
jsp的页面需要尽量静态化,所以我把处理事件写在servlet上面的
lxpandsq 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ilovefzq 的回复:]
String str[][]=new String[2][2];
str[0][0]="0-0";
str[0][1]="0-1";
str[1][0]="1-0";
str[1][1]="1-1";
我用这个数组测试了一下,servlet是可以得到值的,应该是你String str[][]=(String[][])request.getAttribute("tujijieguo");
……
[/Quote]
就想问一个问题,如果我的str[i][j]是个变量,下面的打印的时候方法一有结果,方法二无结果!
如果str[i][j]是个定值,两个打印都有结果!

<form action="./Tuji?bianhao=<%=(str[i][j]).trim()%>" method="post"><input type="submit" name="tiaozhuan" value="<%=str[i][j]%>"></form>
System.out.println(request.getParameter("bianhao")+"bianhao");方法一
System.out.println(request.getParameter("tiaozhuan")+"tiaozhuan");方法二


qq737604771 2012-02-20
  • 打赏
  • 举报
回复
你的form中有多个submit 页面中不知道你到底是那个。 有点会区分。
建议你把<input type="submit" value="<%=str[i][j]%>"> 改成
<input type="button" value="<%=str[i][j]%>" onclick="a(document.getElementById('sub'))">
再写个a函数。
function a(test){
test.submit();
}
触发<input id="sub" name="submit" type="submit" value="确定"> 这个sumit
lxpandsq 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 furney 的回复:]
原因在于你加载<input type=hidden name="bianhao" value="<%=str[i][j]%>" >这个控件时,str的值并没有获取到,所以结果才会出现值为空的情况
[/Quote]

你具体看我的问题面熟了吗?
lxpandsq 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 furney 的回复:]
原因在于你加载<input type=hidden name="bianhao" value="<%=str[i][j]%>" >这个控件时,str的值并没有获取到,所以结果才会出现值为空的情况
[/Quote]

str[][]是servlet传递过来的,有值,因为在上面的jsp页面都显示了,就是从当前jsp页面传递值到servlet上的时候,传不过去,当然两个servlet不一样,而且如果使用url方式可以传,使用隐藏域确传不过去。
huangbo0603 2012-02-20
  • 打赏
  • 举报
回复
楼上说的有道理!
Furney 2012-02-20
  • 打赏
  • 举报
回复
原因在于你加载<input type=hidden name="bianhao" value="<%=str[i][j]%>" >这个控件时,str的值并没有获取到,所以结果才会出现值为空的情况
飞跃颠峰 2012-02-20
  • 打赏
  • 举报
回复
如楼上所说,查看一下这个value在网页中有正确获得值没有
用的是嵌入java代码的话,检查一下str变量是在哪里定义的
qq737604771 2012-02-20
  • 打赏
  • 举报
回复
用firefox调试。 <input type=hidden name="bianhao" value="<%=str[i][j]%>" >
看下 这个value有值吗
lxpandsq 2012-02-20
  • 打赏
  • 举报
回复
修正一下,方法一得到的值不是null,是"",如果是null会报异常的。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧