jstl中的angularjs值比较问题

时间:2016-09-15 11:23:16

标签: angularjs jsp jstl

我使用angularjs在不同页面上的控制器之间传递值。 这是我app.js的一部分。

app.controller('JewelleryCtrl', function($scope, srvShareData) {
      $scope.sharedData = srvShareData.getData();
      sessionStorage.clear();
    });

我可以在下一页获得传递的值

{{sharedData}}

在我的情况下,此{{sharedData}}包含值" Rings"。 我想在jstl中比较这个值,但它不起作用。这就是我正在尝试的,

<div ng-controller="JewelleryCtrl" class="ui-tabs-panel ui-tabs-hide ui-widget-content ui-corner-bottom" id="fragment-2">


    <%    
        String subcat1 = "{{sharedData}}";
        request.setAttribute("subcat", subcat1);
    %>

    <!--<h4>Address</h4>-->
<div class="sell" onsubmit="return false">
     <c:set var="subcategory" value="${subcat}" scope="session"/>
    <c:out value="${subcategory}"></c:out>
    <c:choose>
        <c:when test="${subcategory == 'Rings'}">
    <div class="col-3">
        <label>
            <select id="basemodel" name="sizeofring" tabindex="5">
                <option value="" selected="">Select Ring Size</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
             </select>
        </label></c:when> 
        </c:choose> 
    </div>

这种比较总是失败。我是否已将{{sharedData}}转换为字符串并进行比较?我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

关键是要实现每个代码执行时 - 当请求和呈现页面时服务器上的JSP(即之前响应发送到浏览器)和浏览器中的Javascript(即Angular), 后,浏览器收到已生成的响应。

所以目前,当Angular接管时,不再有request的属性,不再有session(只是一个会话ID cookie)等等。因此,如果你想通过从JSP到Angular的任何值,都需要渲染它。有不同的方法,最好的方法取决于您的需求。你可以这样做。

<div id="subcat" data-subcat="<%= subcat1 %>" style="display: none"></div>

然后读取data-subcat属性的值,或将其设置为全局JS变量

<script>
var subcatGlobal = '<%= subcat1 %>';
</script>

然后直接使用它。还有其他几个选项 - 如果你谷歌用于pass jsp variable angular,你会得到很多有用的结果(其中很多都指向SO)。