在启动时,Tomcat递归扫描WEB-INF目录中的TLD(标记库描述符)文件.因此,如果webapp在该目录下有很多文件,则会降低启动过程的速度.有没有人知道在这种情况下是否有办法完全关闭扫描,或者至少提供一个过滤器来缩小搜索范围?
说我有我的自定义taglib:
<%@ taglib uri="http://foo.bar/mytaglib" prefix="mytaglib"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<mytaglib:doSomething>
Test
</mytaglib:doSomething>
Run Code Online (Sandbox Code Playgroud)
在taglib类中,我需要处理一个模板并告诉JSP重新评估它的输出,例如,如果我有这个:
public class MyTaglib extends SimpleTagSupport {
@Override public void doTag() throws JspException, IOException {
getJspContext().getOut().println("<c:out value=\"My enclosed tag\"/>");
getJspBody().invoke(null);
}
}
Run Code Online (Sandbox Code Playgroud)
我的输出是:
<c:out value="My enclosed tag"/>
Test
Run Code Online (Sandbox Code Playgroud)
当我真的需要输出这个:
My enclosed tag
Test
Run Code Online (Sandbox Code Playgroud)
这可行吗?怎么样?
谢谢.
我正在开发一个Struts基础应用程序.我是Struts的新手.我想使用html的标签,在所提供的标签库目录规定Struts,在一个JSP页面.
但不知道如何使用它.我知道如何使用taglib指令,但我从源代码中了解到.tld文件已经嵌入1.2.8版之后的.jar文件中.我使用的是Struts 2.1.8版.
我不知道该struts-html.tld文件位于哪个.jar文件中.
我试图使用taglib从JSTL中读取"属性文件",但我无法访问它
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%>
Run Code Online (Sandbox Code Playgroud)
我已经在web.xml中正确找到了tld文件,我确定这一点
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/lib/fmt.tld</taglib-location>
</taglib>
Run Code Online (Sandbox Code Playgroud)
属性文件名是msg.性能
<fmt:bundle basename="msg">
<fmt:message key="error.more" />
</fmt:bundle>
Run Code Online (Sandbox Code Playgroud)
我一直在
???error.more???
Run Code Online (Sandbox Code Playgroud)
而不是属性文件中的消息
我认为问题在于找到属性文件,或者在基本名称中
<fmt:bundle basename="msg">
Run Code Online (Sandbox Code Playgroud)
我应该在哪里找到属性文件,如何在代码中引用它?
感谢大家
某些页面可以接收名为"P1"的特定请求参数:
page.do?P1=value1
Run Code Online (Sandbox Code Playgroud)
现在,scriptlet正在测试请求参数是否存在,如果P1是"value1",则会在页面上呈现一些信息.
我想使用Struts标签重写它,而不是使用scriptlet.
你能告诉我一些关于使用什么的提示吗?
替代scriptlet是这样的:
<%
String p1 = request.getParameter("P1");
if ("value1".equals(p1)) {
//do something
}
%>
Run Code Online (Sandbox Code Playgroud) 我想在spring-mvc应用程序中的自定义taglibs中使用spring-beans.原因TagLib-Instances不是由spring实例化的,我不能使用dependnecy-injection.
我的下一个想法是通过拦截器将spring-context添加到请求中,并从tag-class中的请求中获取它.
有没有更好的方法在taglibs中使用spring?春天有什么东西可以随时使用吗?如果spring-mvc中还没有customtag-support,是否有办法用依赖项填充现有对象?
public class MyTag extends TagSupport {
@Autowired
private MyObject object;
public void setMyObject(MyObject myObject) {
this.myObject = myObject;
}
public int doEndTag() {
ApplicationContext context = request.getAttribute("context");
context.populate(this);
return object.doStuff();
}
}
Run Code Online (Sandbox Code Playgroud) 我找不到关于如何在JSPX中编写没有Java的现代标记库的好文档?
Spring Roo提供了大量示例(似乎只是广泛使用tagx的项目).
我可能会提出另一个问题,但每次我想在JSPX(DRY)中不再重复自己时,我觉得必须牺牲宝贵的时间并创建一个标记库,因为没有内联宏.
我觉得我必须在JSP/X中遗漏一些东西.
我想知道用JSP /表达式语言实现省略号缩写的最佳方法是什么.
现在,我一直在使用fn:substring,这没关系,但我希望有三个点"......",以防文本被截断.
通过网络搜索,我发现Java Web Parts有一个AbbreviateTag.但是我想知道是否有更好的库,或者我是否更好地滚动自己的自定义标签.你有什么建议?
当我开发我的portlet时,当我编写我的jsp页面时,我使用了:
<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0"%>
Run Code Online (Sandbox Code Playgroud)
但是eclipse告诉我一个错误,告诉我它找不到http://java.sun.com/portlet_2_0的标签lib描述符.
如何使用tld文件解决此问题?
我使用的标签库,但它是像呈现,而不是输出性格怪异的行为,<,",和>它输出<,"和 >.
代码:
class LoginTagLib {
static defaultEncodeAs = [taglib:'html']
//static encodeAsForTags = [tagName: [taglib:'html'], otherTagName: [taglib:'none']]
def loginControl =
{
if(session.user)
{
out << "Hello ${session.user.name}"
out << """[${link(action:"logout", controller:"user"){"Logout"}}]"""
}
else
{
out << """[${link(action:"login", controller:"user"){"Login"}}]"""
}
}
Run Code Online (Sandbox Code Playgroud)
}
在.gsp我有
<g:loginControl />
Run Code Online (Sandbox Code Playgroud)
当我打开页面时,我有:
Hello Jane Smith[<a href="/Blogito/user/logout">Logout</a>]
Run Code Online (Sandbox Code Playgroud)
但页面的源代码是:
<div id="loginHeader">
Hello Jane Smith[<a href="/Blogito/user/logout">Logout</a>]
</div>
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用.encodeAsHTML(),decodeHTML,.replace('>', '<')和迄今没有奏效