Возможно ли: javascript извлечь значение из тега c: forEach? - PullRequest
2 голосов
/ 22 декабря 2010


Я заполнил некоторые значения с помощью тега c: forEach.Я хочу получить эти значения в моем javascript.
Если я нажму кнопку GetCtag value, то я хочу прочитать из ( c: forEach ) значений в javascript.

Есть ли другой способ получить значение тега c: forEach

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>    
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<f:view>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

       <script type="text/javascript"> 

       function getCTagValue(ctagObject)
       {
          alert("CFor Each Tag Object Value: " + ctagObject);
          // Here i want write code for retrieve the c:forEach tag value   
       }

</script>
</head>
    <body>
        <h:form id="cTagForm" >               

            <c:forEach items="${cTagBean.tagList}" var="ctag">
                <c:out value="${ctag.name} : "/>
                <c:out value="${ctag.age}"/></br>
            </c:forEach>

            <a4j:commandButton id="GetCtagId"  value="GetCtag" oncomplete="getCTagValue('#{cTagBean.tagList}')"/>

        </h:form>
    </body>
</html>

Помогите мне.Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 22 декабря 2010

Просто напечатайте его в синтаксисе JavaScript, а не в синтаксисе HTML.

<script>
    var data = {
        <c:forEach items="${cTagBean.tagList}" var="ctag" varStatus="loop">
            '${ctag.name}': ${ctag.age}${!loop.last ? ',' : ''}
        </c:forEach>
    };
</script>

, чтобы он стал действительным объектом JavaScript (при условии, что name возвращает String, а age возвращает Number):

<script>
    var data = {
        'foo': 10,
        'bar': 5,
        'waa': 20
    };
</script>
1 голос
/ 22 декабря 2010

JavaScript может получить доступ только к данным в HTML, так как они ПОСМОТРЕТЬ БРАУЗЕРОМ .

Метод, который я бы порекомендовал, состоит в том, чтобы сгенерировать JSON (однако ваш Web-API это позволяет) и сохранить его в коде JavaScript - возможно, глобальном. Конечно, желательно держать эти данные «ближе» к месту их использования, но то же самое верно. Другой подход заключается в использовании пользовательских атрибутов HTML (надеюсь, начиная с «data-» для соответствия HTML5).

0 голосов
/ 03 ноября 2016
<script>
        var data = new Array();     
        <c:forEach items="${cTagBean.tagList}" var="ctag" varStatus="loop">
            data.push(${ctag.name});        
        </c:forEach>
</script>
0 голосов
/ 22 декабря 2010

Я получил решение.

<a4j:commandButton id="GetCtagId" 
                   value="GetCtag" 
                   data="#{cTagBean.tagList}" 
                   oncomplete="getCTagValue(data)"/>

Тогда

function getCTagValue(data) 
{                    
    for(var i=0; i<data.length; i++)
    {
        alert("Month : " + data[i].name);
        alert("Value : " + data[i].age);
    }
}
...