如何将对象传递给JSP标记?

我有一个JSP页面,其中包含一个scriplet,我在其中实例化一个对象。 我想将该对象传递给JSP标记而不使用任何缓存。

例如,我想完成这个:

   

我试图避免直接与任何缓存(页面,会话,servletcontext)交互,我宁愿让我的标签处理。

我在这里查找的问题略有不同:“如何将对象传递给标记文件?”

答案:使用属性指令的“type”属性:

 <%@ attribute name="field" required="true" type="com.mycompany.MyClass" %> 

该类型默认为java.lang.String ,因此如果您尝试访问对象字段,表示无法从String类型中找到该字段,则会出现错误。

   

不鼓励在JSP页面中使用Scriptlets。 它杀死了模板语言的目的。

原始语法是重用’<%=%>‘

所以

  

有关示例,请参阅Sun Tag Library Tutorial的这一部分

对我来说,表达式语言只有在我通过将它放在页面上下文中才能访问该变量时才有效。

 <% Object myObject = new Object(); pageContext.setAttribute("myObject", myObject); %>  

否则tas收到null。

并且无需额外工作。 此外,<%=%>提供jsp编译时类型validation,而El仅在运行时validation。

您可以使用“<%=%>”直接在标记中获取对象值:

   

要获取该对象中任何变量的值,您可以使用“obj.parameter”来获取该值:

  

使用表达语言: