0

SpringMVCでjstl:coreを使用したいだけです。

私のコントローラーには次のようなものが含まれています:

private Map<UUID, ProductBean> products = new ConcurrentHashMap<UUID, ProductBean>();

.........。

@RequestMapping(value="/createproduct/{pbid}", method=RequestMethod.GET)
public String getProduct(HttpServletRequest req, Model model, @PathVariable("pbid") UUID pbid) {
    if(!products.containsKey(pbid)){
        ProductBean tmp=new ProductBean();
        products.put(pbid, tmp);
        //model.addAttribute("product",tmp);
        System.err.println("============empty now===============\n");
    }else{
        ProductBean tmp=products.get(pbid);
        System.err.println(pbid.toString());
        System.err.println(tmp.getMpf().printFileNameList());
    }
    req.getSession().setAttribute("pbId", pbid);
    model.addAttribute("pbId", pbid);
    return "production/createproduct";
}

私は次のようなjstlを使用して単純にしたい:

    <c:choose>

                <c:when test="${products.get(pbId).getMpf().size()==0}">

                    <p>No pictures uploaded</p>
                </c:when>
                <c:otherwise>

                    <ul id="products">
                                            ......
                    </ul>
                </c:otherwise>
    </c:choose>

しかし、プログラムは最初のブランチに行くことはありません

jspに<%@ page import ="java.util。*"language = "java"%>パッケージを追加しましたが、機能しないようです。http://www.springbyexample.org/examples/spring-web-flow-subflow-webapp-jsp-example.htmlの例に従います。${persons}のようにjspで宣言されていない変数もあるようです。products変数がコントローラーとjspビューパーツの両方で機能するようにしたい。私は何をする必要がありますか?どこで宣言すればいいですか?jspに他のパケットを含める必要がありますか?

4

1 に答える 1

0

コントローラの次の行がコメント化されているようです。

//model.addAttribute("product",tmp);

JSPは、という名前のモデルでオブジェクトを探していますproducts。これは、を介して何かを参照するときのデフォルトのスコープです${products}。コントローラがこの名前のオブジェクトを追加することはないため、失敗しc:whenます。

さらに、JSTLのリスト要素にアクセスするには、次の表記を使用します。

${products[4]}

JSTLでセットの最初の要素を選択する方法を参照してください。詳細については。

さらに、.getXxx()どちらも使用しないでください。オブジェクトがJavabean仕様に準拠していると仮定すると、次のような名前でアイテムを参照します。

${products[4].mpf}
于 2012-10-08T16:28:03.027 に答える