2 qq 29354645 qq_29354645 于 2017.08.30 15:50 提问

请教各位大神,jsp 页面for each循环,值为空则直接显示只读?

各位大神好:
小弟碰到以下问题不知道如何解决,
![图片说明](http://img.ask.csdn.net/upload/201708/30/1504079294_918842.png)图片说明pmdApprovorList为空时,文本框就成了只读了(图一为有值的时候,图二为空的时候),还请各位大神指点一二,谢谢!

后台action:
public String input()
throws Exception
{
this.request.setAttribute("menuName", StringUtil.filtrateString(this.request.getParameter("menuName")));
this.request.setAttribute("companyList", this.companyService.findAllAvalible());

if (this.id != null) {
  this.request.setAttribute("pmdApprovorList", this.commonService.getMoreUserByRoleType("NPR_TT_PROJECT_USER", "TTPROJECTID", "PMD", this.id));
}
return "input";

}

页面显示:


PMD




/c:forEach

9个回答

qq_33727653
qq_33727653   2017.08.30 16:37
已采纳

看楼主的代码,pmdApprovorList有值才会进入循环 才会有input这个标签,但是当pmdApprovorList没有值的时候 < c:forEach items="${pmdApprovorList}" var="user" >执行到这一行时就不会进入了,楼主要想让在pmdApprovorLis是空值的时候也有input标签,就要确保不走< c:forEach items="${pmdApprovorList}" var="user" >这个循环体的情况下,也能产生input标签!!!

qq_29354645
qq_29354645 非常感谢大佬,谢谢
3 个月之前 回复
qq_33727653
qq_33727653 不是啊 我没说不用for each取啊 我的意思是 如果你没有在for each之外写input 就在在改改,比如用c:if 判断下 如果 pmdApprovorList为空,你就另写个input,如果 pmdApprovorList不是空就走你的for each
3 个月之前 回复
qq_29354645
qq_29354645 pmdApprovorList这个如果不for each取不到值,大神可有什么好方法,还请指点一二,谢谢!
3 个月之前 回复
u013829202
u013829202   Rxr 2017.08.30 17:15

在c:forEach前面加个if else判断。 else里面写不加循环

qq_29354645
qq_29354645   2017.08.30 15:54

jsp模块:


PMD
        <c:forEach items="${pmdApprovorList}" var="user">
            <input type="text" id="pmdApprovor"  value="${user['DISPLAYNAME'] }" class="txt txt_icon_sel_single_people" onclick="openSelectEmployeeWindow('${ctx}',true,'pmdApprovor')"/>
            <input type="hidden" name="pmdApprovor"  id="pmdApprovor_loginname" value="${user['EMPUID']}"/>
        </c:forEach>
        </td>
    </tr>
qq_38005982
qq_38005982   2017.08.30 15:56

这么说吧!你呢在里有一个判断判断一下里面的值是否是空的,如果是空的,你就定义一个var ss=""

qq_29354645
qq_29354645 我也菜鸟,不过还是很感谢你,谢谢!
3 个月之前 回复
qq_38005982
qq_38005982 回复青灯烛影: 其次我是菜鸟!!,有时候我要现给一个for循环里声明的input加id没办法只能找对象里的值当ID,有时值是一样的后面加个123不就区分了!,直接拿ID拿不到,就把input的val也设成一样的数值,拿value然后加上123不久区分了,这个有好多笨方法
3 个月之前 回复
qq_38005982
qq_38005982 回复青灯烛影: 你试试在《c:forEach>的外面定义一个var ss="0" 在forEach里只要循环ss就变成"1" 到时候写一个if语句判断一下如果是0说明没进去,把文本框变成只读还是可输入的我乱,如果不是要咋样咋样不行么?
3 个月之前 回复
qq_29354645
qq_29354645 首先感谢大神的回复与支持,但是会有个问题,那就是当pmdApprovorList没有值的时候 < c:forEach items="${pmdApprovorList}" var="user" >执行到这一行时就不会进入了input框,无法获得到这个文本框的id属性
3 个月之前 回复
qq_38005982
qq_38005982 回复青灯烛影: 还是说在PWM没值的时候把里面的数据全都清空?我感觉这思路没问题啊
3 个月之前 回复
qq_38005982
qq_38005982 回复青灯烛影: 你这样。。。让我很尴尬啊!你的文本框有ID没?你在这个方法里判断了PWM没值,你就不能$("#文本框的ID").attr("readonly",)不行么?这有啥区别,如果有有值改一下属性不就行了
3 个月之前 回复
qq_29354645
qq_29354645 。。。不是加只读属性呢!是pmdApprovorList没有值,我这个文本框就成只读了,有值得时候是文本框
3 个月之前 回复
qq_38005982
qq_38005982 我擦!我的代码呢。。。。如果是空的,你就用attr("readonly","readonly"),给这个标签加个只读属性。。。。我原本代码都写完了
3 个月之前 回复
qq_29354645
qq_29354645   2017.08.30 16:08

图片说明(空值的是变更了只读)

qq_29354645
qq_29354645   2017.08.30 16:09

图片说明(有值的时候)

qq_29354645
qq_29354645   2017.08.30 16:15

可能表达的不是很清楚,其实就是想实现图中“支持部门审批人”选人框变更成“图中负责项目副总经理一样的“单人选择框”
因为单人选择框中的是主表中的字段,而多人是子表中的字段,是通过request.setAttribute("pmdApprovorList", pmdApprovorList)形式取出的值

sinat_38913556
sinat_38913556   2017.08.30 16:16

pmdApprovorList 为空的话 他一次循环都没走 你的input在循环里面 当然就没了
你可以查看源看一下

qq_29354645
qq_29354645 谢谢大佬的支持
3 个月之前 回复
huang931027
huang931027   2017.08.31 09:10

666666666666666

Csdn user default icon
上传中...
上传图片
插入图片