Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在struts2中获取迭代器外部的值_Java_Jsp_Struts2 - Fatal编程技术网

Java 如何在struts2中获取迭代器外部的值

Java 如何在struts2中获取迭代器外部的值,java,jsp,struts2,Java,Jsp,Struts2,我需要打印catalogo.id,因为我需要从它的id获取catalogo对象。我如何获取它,因为我有一个迭代器?现在我打印action?idprodotto=XX&idcatalogo= jsp <s:iterator value="catalogo"> <s:iterator value="prodotti"> <tr style="background-color: #99CCFF"> <td>

我需要打印
catalogo.id
,因为我需要从它的id获取
catalogo
对象。我如何获取它,因为我有一个迭代器?现在我打印
action?idprodotto=XX&idcatalogo=

jsp

<s:iterator value="catalogo">
    <s:iterator value="prodotti">
        <tr style="background-color: #99CCFF">
            <td><s:property value="id" /></td>
            <td><s:property value="descrizione" /></td>
            <td><s:property value="prezzo" /></td>
            <td><s:property value="nPezziVenduti" /></td>
            <td><a
                href='<s:url action="cancellaProdottoDaCatalogo.action" >
            <s:param name="idprodotto"><s:property value="id"/></s:param>
            <s:param name="idcatalogo"><s:property value="catalogo.id"/></s:param></s:url>'>rimuovi
                    dal catalogo</a></td>
        </tr>
    </s:iterator>
</s:iterator>
行动方法

public String cancellaProdottoDaCatalogo(){
    System.out.println(catalogo.getDescrizione());
    Catalogo tmp = catalogoDAO.getCatalogo(catalogo.getId());
    for(Prodotto p:catalogo.getProdotti()){
        tmp.rimuoviProdotto(p);
    }
    catalogoDAO.aggiornaCatalogo(catalogo);
    return SUCCESS;
}

阅读更新后的问题后,我认为您应该使用
var
-属性,因为@A Lee已经在评论中回答了

您有一个嵌套的迭代,如果您想访问第一个迭代器,您必须使用某种引用来查找第一个迭代器中的值。而
var
提供对外部循环中当前元素的引用,并将引用作为c推送到值堆栈中

与内环相同p引用内环中的当前元素

附带说明:struts迭代器将当前元素的元素推送到值堆栈中,这样您就可以轻松地使用id、Descriptione等。请参见struts文档中的第三个示例

例如:


目录编号:
Prodotti Id:
"

请注意#在引用名称之前,在这种情况下需要在上下文中搜索变量。

如果我理解正确,您可以通过使用
var
属性绑定迭代器来解决此问题property@ALee但这样我不能传递对象,但我会传递一个“字符串”“。对吗?像在
-标签中一样打印?使用
任何你想打印该列的地方。@beendr它不起作用,你的解决方案就像我做的那样:(@ALee我更新了我的问题。请检查你是否可以:)
public String cancellaProdottoDaCatalogo(){
    System.out.println(catalogo.getDescrizione());
    Catalogo tmp = catalogoDAO.getCatalogo(catalogo.getId());
    for(Prodotto p:catalogo.getProdotti()){
        tmp.rimuoviProdotto(p);
    }
    catalogoDAO.aggiornaCatalogo(catalogo);
    return SUCCESS;
}