Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.2k views
in Technique[技术] by (71.8m points)

jsf - Is possible : javascript extract value from c:forEach tag?


i have populate some values using c:forEach tag. I want to get those values in my javascript.
If I click GetCtag value button, then i want to read from (c:forEach) values in javascript.

Is any other-way to retrieve the c:forEach tag value

<%@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>

Help me. Thanks in advance.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Just print it in JavaScript syntax instead of HTML syntax.

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

So that it end up as valid JavaScript object (assuming that name returns String and age returns Number):

<script>
    var data = {
        'foo': 10,
        'bar': 5,
        'waa': 20
    };
</script>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...