在JSP中使用自定义标记访问对象

时间:2015-06-16 12:53:32

标签: java javascript jsp custom-tags

我正在尝试将会话对象从sessionConstant.java传递到我的COMP.jsp文件....

sessionConstants.java

public class SessionConstants {


    public static final String COMP_TYPE_GRID_JSON = "companyTypeGridModelObj";



}

在jsp文件中我有一个* .js脚本.......

<script type="text/javascript" charset="utf-8">
    var aa = "${cons.COMP_TYPE_GRID_JSON}";
    var bb = "${sessionScope.companyTypeGridModelObj}";

    var jsonModal = <myComp:JSON object = "${bb}" />


</script>

Q1。如何在 var aa 中传递值,而不是 &在#strong> var bb 中定义的sessionScope对象中的#39; companyTypeGridModelObj&#39; ...

Q2 即可。我如何在我的jstl中传递 var bb

请帮助

表示传递此属性的java中的代码

NgGridModelConvertor ngGridModelConvertor = new NgGridModelConvertor();
NgGridModel ngGridModel = ngGridModelConvertor.getNgModelData1(columnModeList, dataMapList, rtlOrientation);
getSession().put(SessionConstants.COMP_TYPE_GRID_JSON, ngGridModel);

1 个答案:

答案 0 :(得分:1)

您可以参考this thread来解答您的问题。

首先,您需要在会话范围内插入值。然后,您可以从JSP文件访问数据。当你使用标签时,我想你并没有使用单独的js文件。如果你使用单独的文件,那么你将不得不使用另一种方式传递数据,如Ajax调用或隐藏输入。

Servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    HttpSession session = request.getSession(); 
    session.setAttribute("Questions", getQuestion());
}

JSP:

<c:out value="${sessionScope.Questions.questionPaperID}" />

OR有命名值:

<c:set scope="session" var="varName" value="${expression}" />
<c:out value="${varName}" />

适合您的情况:

<c:set scope="session" var="bb" value="${sessionScope.companyTypeGridModelObj}" />
<p> My value is : ${bb}</p>

编辑:使用TagLib

Here您拥有TagLib的官方文档。您应该阅读本文,它可能会为您提供更多信息。

针对您的问题:在您的标记文件中,您声明了一个包含属性的标记。这样,当您调用此标记时,您可以将$ {bb}值传递给标记。

my tag file中(参考我的个人代码,也许可以改进)

// Import c library
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
// Import fn library
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
// Declare my tag in my own library (give location)
<%@taglib tagdir="/WEB-INF/tags/" prefix="bookmark" %>
// Declare an attribute for this tag
<%@attribute name="directories" required="true" rtexprvalue="true" type="java.util.List"%>
// use the attribute
<c:forEach var="directory" items="${directories}">
</c:forEach>

my main JSP

// Import my tag lib
<%@ taglib tagdir="/WEB-INF/tags/" prefix="bookmark" %>
// Use my tag and pass ${directories} value to the tag
<bookmark:directories directories="${directories}"></bookmark:directories>