繁体   English   中英

如何在 jsp 中使用自定义标签更改列表?

[英]how can i change list with custom tag in jsp?

我在 JSP 中遇到了以下自定义标签问题。 html 页面加载结束时div自定义标签生成的内容列表。 之后,我想用 ajax 的新数据替换列表。 首先,我清空了旧列表。 我做了一个 html 字符串(pdListHtml),append 它。 但我根本无法获得任何新清单。
如果代码有问题,请指出我。 谢谢。

html.jsp

<ul class="pdImgType">
    <c:forEach var="goods" items="${goods}">    
        <div class="pdList">
            <pt:product prdNm="${goods.goods_name}" dispPrc="${goods.goods_origin_price }"/>
        </div>    
    </c:forEach>
</ul>

Ajax JS

const filterParam = $("#submitForm").serializeArray();

$.ajax({
    type : "post",
    url : "/ctgrSearchFilter.do",
    data : filterParam,
    dataType : "json",
    success : function(data) {               
        $(".pdImgType").empty();
        const goods = data.result.goods;        

        for(let i=0 ; i < goods.length ; i++){
            let pdListHtml = "";
            pdListHtml += '<div class=\"pdList\">';
            pdListHtml += '<pt\:product prdNm=\"'+ goods[i].goods_name +'\" dispPrc=\"'+ goods[i].goods_origin_price +'\"/>';
            pdListHtml += '</div>';
             $(".pdImgType").append(pdListHtml);
        }                
     },
     error : function(err) {
         alert("error");
     }
});

来自 java 的数据

@RequestMapping(value = "/ctgrSearchFilter.do" , method = equestMethod.POST)
@ResponseBody
public JSONObject ctgrSrhFilter(HttpServletRequest request) throws Exception {
    JSONObject json = new JSONObject();
    ModelAndView mv = commSearchService.callSearchAllNewAPI(request); 
    logger.info(">>>> ctgr result mv : "+ mv);       
    json.put("result",  mv.getModel());

    return json;
}

控制台登录 java

ctgr 结果 mv:ModelAndView:物化视图为 [null]; model 是 {cateCntTot=0, cate=[], brand1List=[], delryList=[], total=1254, goods=[{goods_name=nice, goods_origin_price=109000}]}

您需要使用data.goods获取goods ,然后对其进行循环。此外,请检查您的json是否有效。

演示代码

 //your json response var data = { "cateCntTot": 0, "cate": [], "brand1List": [], "delryList": [], "total": 1254, "goods": [{ "goods_name": "nice", "goods_origin_price": 109000 }] }; var pdListHtml = ""; ///fetching data->goods var goods = data.goods; for (let i = 0; i < goods.length; i++) { //your html /*pdListHtml += '<div class=\"pdList\" style="background:yellow"><pt\:product prdNm=\"' + goods[i].goods_name + '\" dispPrc=\"' + goods[i].goods_origin_price + '\"/></div>';*/ //demo data to append pdListHtml += '<div class=\"pdList\" style="background:lightblue">prdNm:' + goods[i].goods_name + ' <br/>dispPrc:' + goods[i].goods_origin_price + '</div>' } //add data under pdImgType class $(".pdImgType").html(pdListHtml);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul class="pdImgType"> <c:forEach var="goods" items="${goods}"> <div class="pdList"> <pt:product prdNm="${goods.goods_name}" dispPrc="${goods.goods_origin_price }" /> </div> </c:forEach> </ul>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM