如何使用struts2的标签迭代出HashMap中的List的记录?

我Action中有一个HashMap,里面存放的是以ID为key,List为value的数据,请问怎样才能使用struts2的标签迭代出里面的数据?
我目前是这样写的:

<s:iterator value="answerHashMap">
       <s:iterator value="<s:property value="subjectId"/>">
              <s:property value="answerContent"/><br>
       </s:iterator>
</s:iterator>


weblogic控制台报出异常:
weblogic.servlet.jsp.JspException: (line 124): Non-matching extension tags //[ null; Line: 124]

问题补充:
xuxiaolei (中级程序员):

我要想区HashMap里面的指定key的value呢?

回答: 如何使用struts2的标签迭代出HashMap中的List的记录?

  1. 我要想区HashMap里面的指定key的value呢
    取hashMap指定key的value用hashMap['list']

    然后迭代value值用下面的语句
    <ww:iterator value="hashMap['list']">
        <ww:property /> <BR>
    </ww:iterator>

struts2 的iterator标签如何迭代出request中的bean集合对象?

  1. Q
    我写的代码如下,但却不能取到name,高手们解答下,我如何才能将users中user的所有属性全部显示出来呢
    <s:if test="#request.users!=null"> 
    <s:iterator value="#request.users" var="user">
    姓名:<s:property value="user.name"/>
    </s:iterator>
        </s:if>
  2. A
    <s:property value="user.name"/> 
    这句不对
    你的users应该是个类似这种collection<User>的东西 你只要
    <s:property value="name"/>
    就可以了

再页面中如何使用struts2的标签遍历出在List中的对象的属性

  1. Q
    我再Action中向session中放入了一个list,list中有若干个classmate对象,请问如何再页面中将list中的classmate对象中的属性(name,sex,address)显示出来?
  2. A
    <[email protected] prefix="s" uri="/struts-tags"%>
    <s:iterator value="#session.classmatelist" status="statu" id="item">
        <s:property value="name" />
        <s:property value="sex" />
        <s:property value="address" />
    </s:iterator>

请问如何找出表中所有重复的记录?

  1. Q
    RT
  2. A
    suppose your table as
    NA(char)  NUM(dec)
    A         200
    B         300
    C         400
    B         300

    If u want to get row("B",300),U can use as:

    SELECT  distinct * from A where Dcount("NUM","A","NA='"&NA&"' AND NUM1="&NUM)>1

java中如何用 c:foreach 迭代出list集合中的map集合中的value值

  1. Q
    action中的代码片段: 
    int i = 0; 
    Map map = new HashMap(); 
    List list = new ArrayList(); 
    map.put(i,ci);  //ci是个Book对象
    i++; 
    list.add(map);
    session.put("list",list);  //实现了SessionAware接口
    那么我在JSP页面中要如何迭代出ci中的各个属性啊?或者我action哪里写错了?
    <c:forEach items="${list}" var="map" varStatus="status">     ${map.value.bname}
    </c:foreach>
    现在迭代出来的是空
  2. A
    <c:forEach items="${list}" var="map" varStatus="status">
        <c:forEach items="${map}" var="entry">
           ${entry.value.bname}
        </c:forEach>
    </c:foreach>

struts2.0标签与jQuery问题

  1. Q
    JQuery用ajax的时候,param传入的值一般使用jquery的方式(比如根据ID取值)并传入的。
    我见struts2.0+ajax+JQuery的例子,都没有用到struts2.0的标签,是不是用了JQuery就不能用struts2.0的标签了,如果可以得话怎么用?谢谢
    问题补充:飞雪无情 写道可以用,。struts2标签就和普通标签一样,jquery只是一个js库。可以混合用,你就想象成你在使用jquery+html标签,而不是jquery+struts2就好用多了。

    理解不了,不是struts2.0的标签可以直接取到valueStack里面的值吗?一般的html好像不可以吧。
    比如说:<s:textfield >标签可以直接把值赋给action的属性.如果你写成html,应该做不到这样吧,难道还要在httpRequest里面把<input type="test">取出来?
    问题补充:qinglangee 写道直接把你看的例子里的HTML标签换成STRUTS2标签就可以了

    但是用到ajax的时候,param传入的值都要使用js传入,ajax不能用post自动提交整个表单的内容

    引用比如说:<s:textfield >标签可以直接把值赋给action的属性.如果你写成html,应该做不到这样吧
    把值赋给action的属性,是后台struts框架的作用,不是标签做到的.用HTML也可以,你在用过标签的页面点击查看源码,那就是生成的HTML,直接写一样的
    我有看页面源码,一般<s:textfield name="aaaa">相对的html是<input type="text" name="aaaa" id="aaaa">
    那想请问下,struts2.0框架是根据哪个对action的属性做mapping的?name还是id?
    比如如果我用纯html做的页面,因为无意中写了个<input type="text" id="aaaa"> ,在页面被提交以后,是不是会把这个输入自动mapping到action的aaaa属性那里呢?


    问题补充:飞雪无情 写道你不能这么理解,这样理解就太偏了。我说的一样是用法一样,功能就不一样了。struts2的标签更强大点,比如支持ajax,UI组件等等,但是这不妨碍你用jquery啊。struts2的标签和jquery结合和html标签和jquery结合是差不多的。还有struts2的标签一般只有初始化的功能,就是在页面加载的时候初始化界面或者字段的值,但是要用他完全代替javasc(或者说jquery)却是不可能的,比如你在某个字段单击的时候想从后台获取一些数据,这时候采用jquery的ajax函数更好一点,我本人不太喜欢struts2的标签,在项目中也不用。
    是,标签看起来确实不好用,但是我不晓得如果我用纯html的话,如何把页面的值传到后台action去.难道跟servlet一样去httpRequest取??
    另外,JQuery固然强大,只是那种方式产生的代码不好维护.我是从维护得成本得角度看,所以不想JQuery..感觉脚本写出来的东西总是乱乱的
    问题补充:另外,我还有疑问。不好意思,因为没人带,都是看自带得docs的。疑问比较多.
    如果您不用struts标签的话,哪您用的是struts2.0的什么功能?validation?
    Interceptors?
    Interceptors能实现的功能,也可以用spring 的aop实现吧?validation和localization好像就是自己写几个java类实现也不难吧?(我以前有配合spring 的AOP写过validation)。。呵呵,可能我比较愚钝,我看了好几天的struts2.0文档了,怎么感觉struts2.0标签就是struts得核心呢?其余功能好像也没有什么特色...感觉解惑,tks
    问题补充:向前走的螃蟹 写道什么和什么啊。struts2的标签和jquery有啥关系呢?你用jquery的ajax是想异步交互吧?你用struts2的行吗?

    struts2.0有dojo吧?那个好像可以跟struts2.0得标签配合起来,但是JQuery我就不晓得怎么配合了.不好意思。。可能我脑子里概念还没建议起来
  2. A
    引用是,标签看起来确实不好用,但是我不晓得如果我用纯html的话,如何把页面的值传到后台action去.难道跟servlet一样去 httpRequest取??

    这个可以满足啊。struts2的自动封装,可以把你前台的input和你action定义的字段名关联到一起的,如:<input type="text" name="age" value="18"/>,在action中定义
    private int age;并为其创建getter和setter方法,这时候Action中字段age的值就是18了。
    引用另外,JQuery固然强大,只是那种方式产生的代码不好维护.我是从维护得成本得角度看,所以不想JQuery..感觉脚本写出来的东西总是乱乱的
    这个不敢苟同,Jquery是一样强大的JS库,是一个操作DOM强大的工具,写网页避免不了吆要和JS打交道,所以选择一个很好的JS库是一个关键(不说UI,只说操作DOM),而jquery恰恰就是一个,优点很多就不说了。

    struts2优点很多,拦截器是它的基石;基于MVC架构,开发过程很清晰;易于扩展的插件机制已经模块化的配置是的struts2已经成为事实上的MVC标准。

javascript 如何校验 iterator 迭代出的list对象数组

  1. Q
    <s:iterator value="listkdd" status="status">
    <s:checkbox name="listkdd[%{#status.index}].delete_check" value="%{listkdd[#status.index].delete_check}"></s:checkbox>
    <s:textarea name="listkdd[%{#status.index}].policy_msg" value="%{listkdd[#status.index].policy_msg}" ></s:textarea>
    <s:hidden   name="listkdd[%{#status.index}].hyoji_cd" value="%{listkdd[#status.index].hyoji_cd}" ></s:hidden>
    </s:iterator> 



    上面是jsp里的代码 用struts2 的 s:iterator 将封装了bean对象的 listkdd 迭代到到页面上来了。
    在页面边机构,需要多行数据的的表单验证。

    请问这个该怎么捕捉到每一行啊 我看jsp页面返回的都是

    <input type="checkbox" name="listkdd[0].delete_check" value="true" id="TestCumit_listkdd_0__delete_check"/>
    <input type="checkbox" name="listkdd[1].delete_check" value="true" id="TestCumit_listkdd_1__delete_check"/>
    <input type="checkbox" name="listkdd[2].delete_check" value="true" id="TestCumit_listkdd_2__delete_check"/>



    这样的表单,该怎么逐句校验呢
    问题补充:liveHappy 写道给你个提示吧。
    如果你需要对checkbox是否没选中做验证的话,可以这么做。
    你在页面上会有很多个checkbox吧,那么需要去判断checkbox被选还是没被选,
    用javascript去获得页面所有标签,如果标签类型等于checkbox的话,获得checkbox对象,在判断此checkbox的属性disabled是为true还是为false,如果为false就是没有被选中。
    在有个方法,给checkbox一个有规律的id。
    <s:checkbox id="#status.index" name="listkdd[%{#status.index}].delete_check" value="%{listkdd[#status.index].delete_check}"></s:checkbox>
    然后javascript做一个for去找对应id的对象,在判断disabled属性为true或false。
    那么下面的textarea也可以用这种方法去做。
    很直观。
    你说有规律的ID 是哪种形式的呢
    对于迭代出的list里的对象 我现在加了id 这项, 拿checkbox来说,
    迭代到页面可以有
    id=check_delete0
    id=check_delete1
    id=check_delete2
    。。。
    id=check_deleteN

    或者是
    id=check_delete[0]
    id=check_delete[1]
    id=check_delete[2]
    。。。
    id=check_delete[N]
    这两种可以吗?另外你说的for循环应该如何循环取得上面的 从0 到N的项目啊?


    问题补充:同一个页面里还有其他表单里的checkbox,所以不能用你说的第一个方法实现了
  2. A
    好,可能还有别的checkbox,但不是在循环中的。那么只多循环中的去做判断。
    可能你不知道循环中的list是多少条,也许就一个也许很多,那循环中得有个条件去限制循环的次数。以页面中的input标签的个数为次数,不要想这样是不是会去做很多处理,这个不用想,它返回的就是一个总数。checkbox的id就以你写的第一个数字的。
    for(var i =0 ; i< document.getElementsByTagName("input").length;i++){
        //先判断是否为object对象,要不会报找不到属性.
        if(document.getElementById("check_delete"+i) != null){
            //判断是否被选择
    	if(document.getElementById("check_delete"+i).checked == true){
               //自己写上要处理的事情了,或者赋值或者弹出alert();
            }
        }
    }

struts2自定义标签官方资源在哪?

  1. Q
    想写一个struts2的自定义标签,百度一下,一大堆资源,大部分是别人的博客,但本人又不想以别人博客为准,想问下各位高手,哪里能够找到struts2自定义标签的官方资料?
  2. A
    struts2标签在struts2-core.jar/template/simple下面,都是ftl文件

    ftl文件是叫freemarker,所以你要搜索freemarker相关资料

如何迭代出List Integer

  1. Q
    RT 如何迭代出List<Integer>
  2. A
    <s:iterator id="d1" value="list1" status="s3">   
         <tr>   
        <s:iterator id="d2" value="list[#s3.index]" status="s4">   
         <td>   
          <s:property value="第二个循环出来的对象属性名称"/>   
         </td>   
            </s:iterator>    
          </tr>   
        </s:iterator>

struts2.0标签在页面显示问题

  1. Q
    页面代码如下:
    <table id="loginbox_4">

    <tr>
    <td><s:text name="label.login.userId" /></td>
    <td><s:textfield name="adminInfo.userId" /></td>
      </tr>
    <tr>
    <td><s:text name="label.login.password" /></td>
    <td><s:password name="adminInfo.password" /></td>
    </tr>
    <tr>
    <td align="center"><s:submit value='%{getText("button.land")}' /></td>
    <td><s:reset value='%{getText("button.reset")}' /></td>
      </tr>

    </table>
    可是出来的效果“用户ID”和对应的输入框有点搓位,而且按钮怎么是两行显示?
    以下部份是IE下的源代码:
    <table id="loginbox_4">

    <tr>
    <td>用户id</td>
    <td><tr>
        <td class="tdLabel"></td>
        <td
    ><input type="text" name="adminInfo.userId" value="" id="login_adminInfo_userId"/></td>
    </tr>
    </td>
      </tr>
    <tr>
    <td>密码</td>
    <td><tr>
        <td class="tdLabel"></td>
        <td><input type="password" name="adminInfo.password" id="login_adminInfo_password"/></td>
    </tr>
    </td>
    </tr>
    <tr>
    <td align="center"><tr>
        <td colspan="2"><div align="right"><input type="submit" id="login_0" value="登陆"/>
    </div></td>
    </tr>
    </td>
    <td><tr>
        <td colspan="2"><div align="right"><input type="reset" value="重置"/>
    </div></td>
    </tr>
    </td>
      </tr>

    </table>
    我想请问下class="tdLabel"这个是在哪里定义的?

    问题补充:
    试过了,在form表单上加入theme="simple“就可以了。
    但是我看我以前用struts2.0标签写的页面没有theme="simple“,但是出来的效果也不会像我这样啊?
    问题补充:
    首先申明,我不是你的哥们!
    还有就是你没有说清楚是我定义的css把struts的覆盖了?是指css把theme="simple“这个覆盖了?还是什么?

    讲清楚,我就给分啦!我是很自觉的!
  2. A
    可能是你定义了其他的Css 把struts2得这个覆盖了

    哥们  问题解决了 就给分哈 struts2.0标签在页面显示问题