【问题标题】:access object using custom tag in JSP在 JSP 中使用自定义标签访问对象
【发布时间】:2015-09-01 07:20:39
【问题描述】:

我正在尝试将 session 对象从 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. 我如何传递 value in var aa 而不是 ' var bb 中定义的 sessionScope 对象中的 companyTypeGridModelObj' ...

第二季度。我如何在我的 jstl 中传递 var bb

请帮忙

用于传递此属性的 java 中的代码

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

【问题讨论】:

  • 你能展示你实际将属性写入会话的代码吗?此外,由于 JSTL 在 Javascript 之前被评估,您应该能够查看源代码并在 Javascript 中看到您评估的 JSTL。
  • Q1没看懂,能改一下吗?
  • @RPresle : Q1 已经改写。
  • @MichaelPeacock:我添加了额外的代码
  • 对不起,我还是不明白。也许你能提供样品,你想要什么,在哪里?

标签: java javascript jsp custom-tags


【解决方案1】:

您可以参考this thread 可能会回答您的问题。

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

小服务程序:

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}" />

或具有命名值:

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

【讨论】:

  • &lt;c:out ------ /&gt; 在尝试使用 JSTLTAGLIB 中调用时无法使用
  • 你不需要使用这个特殊的标签,重要的是如何访问已经 c:set 的值
  • 如您所见..我使用了 tagLib &lt;myComp:JSON object = "something here" /&gt; ...我正在尝试将 sessionScope 中的对象传递给这个myComp:JSON tabLib ....我该如何使用@987654334 @ 设置这个值...???
  • 这不起作用...请提供其他建议。
  • 也许你可以给我们一些你做了什么的提示?改进您的问题添加示例和代码
猜你喜欢
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
相关资源
最近更新 更多