标签: taglib

jsp taglib与jsp页面之间的根本区别是什么?

我有几个常见的元素(组件),将生成一些HTML.似乎我的选择是创建一个taglib,或者只是将该逻辑放入一个jsp页面并包含jsp.

有什么不同?积极与消极?

jsp taglib jspinclude

8
推荐指数
2
解决办法
2996
查看次数

在taglib中定义的自定义Facelets组件和属性

在Facelets中定义自定义组件既简单又快捷,但有一点我无法弄清楚.

Facelets是否可以定义我的自定义组件具有哪些属性?即:我创建了一个以这种方式使用的组件:

 <blue:modalWindow id="editFeesWizard" width="500" height="440" title="Wizard">
Run Code Online (Sandbox Code Playgroud)

并在taglib.xml中定义如下:

<!DOCTYPE facelet-taglib PUBLIC
        "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
        "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
<facelet-taglib>
    <namespace>...</namespace>
    <tag>
        <tag-name>modalWindow</tag-name>
        <source>components/modalWindow.xhtml</source>
    </tag>    
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)

Taglib不包含有关组件属性(id,width,height,title)的任何信息,因此IDE无法检查我的语法,也不能在我输入时建议属性.

我在Facelets文档中找不到关于这个主题的任何内容.以为你可以帮忙.谢谢!

jsf components facelets taglib

8
推荐指数
1
解决办法
3298
查看次数

如何获取文件属性?

我想要一个显示媒体文件的一些文件属性的应用程序,如果可用,比如(不知道windows中使用的确切英文单词)FileName,Length/Duration,FileType(.avi .mp3等)我试过taglib和windowsapishell但我没有得到一个工作结果(参考是好的)

ShellFile so = ShellFile.FromFilePath(file);
so.Properties.System.(everythingIwant)
Run Code Online (Sandbox Code Playgroud)

向我展示了我想要显示的很多文件属性,但我无法让它工作一个错误的例子:

'WindowsFormsApplication2.vshost.exe'(托管(v4.0.30319)):已加载'C:\ Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll',跳过加载符号.模块已经过优化,调试器选项"Just My Code"已启用.程序'[6300] WindowsFormsApplication2.vshost.exe:Program Trace'已退出,代码为0(0x0).程序 '[6300] WindowsFormsApplication2.vshost.exe:托管(v4.0.30319)' 已经与代码0(为0x0)退出.

容易的事情

var thing = so.Properties.System.FileName.Description;
Console.WriteLine(thing);
Run Code Online (Sandbox Code Playgroud)

不会工作

我确实知道一些Java和PHP编程,但我对C#完全不熟悉


特别感谢@ marr75和@errorstacks!

一个跟进问题:我做了这个,它有效

class Program
{
    static void Main(string[] args)
    {   
        string file = "E:/Dump/Shutter Island.avi";

        FileInfo oFileInfo = new FileInfo(file);
        Console.WriteLine("My File's Name: \"" + oFileInfo.Name + "\"");
        DateTime dtCreationTime = oFileInfo.CreationTime;
        Console.WriteLine("Date and Time File Created: " + dtCreationTime.ToString());
        Console.WriteLine("myFile Extension: " + oFileInfo.Extension);
        Console.WriteLine("myFile total Size: " + oFileInfo.Length.ToString());
        Console.WriteLine("myFile filepath: " …
Run Code Online (Sandbox Code Playgroud)

c# windows-shell taglib getproperties windows-api-code-pack

8
推荐指数
2
解决办法
7万
查看次数

带有taglib的C#mp3 ID标签 - 专辑封面

我正在制作自己的mp3标签,到目前为止一切都很好.虽然我坚持阅读专辑艺术标签.

我想知道如何在C#.NET图片框中显示封面,但是关于该特定标签的所有内容都让我感到困惑.

我知道我可以从这样的文件中获取标签

txtAlbum.Text = currentFile.Tag.Album;
Run Code Online (Sandbox Code Playgroud)

但我需要做的就是从文件中抓取图片并将其打包在图片框中.然后我想知道如何将图片(jpg,png)写入文件并覆盖现有文件.

非常感谢任何帮助,感谢您宝贵的时间.

c# taglib albumart id3-tag

8
推荐指数
2
解决办法
1万
查看次数

我可以在XPage中使用外部JSP标记库吗?

我想使用由XPage的另一个(不是IBM)软件公司提供的JSP标记库.这可能吗?如果可以,我如何将新的jar文件关联到标记库命名空间,以便识别它?

jsp taglib xpages

8
推荐指数
1
解决办法
419
查看次数

无法加载或实例化TagLibraryValidator类:org.apache.taglibs.standard.tlv.JstlCoreTLV

所以我在Gemini运行时的OSGi中使用JSTL.当我尝试访问我的网址时,我得到以下异常servlet: -

SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /WEB-INF/login.jsp (line: 3, column: 66) Unable to read TLD "META-INF/c.tld" from JAR file "file:/D:/OSGi%20Runtime/Gemini/gemini-web/dep/com.springsource.javax.servlet.jsp.jstl-1.2.0.v20110728.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV
Run Code Online (Sandbox Code Playgroud)

但是,我已经检查过,我已经在运行时已经拥有了所有必需的包.我拥有的相关捆绑包是: -

71  ACTIVE      javax.servlet_3.0.0.v201103241009
73  ACTIVE      javax.el_2.2.0.v201105051105
74  ACTIVE      javax.servlet.jsp_2.2.0.v201103241009
75  ACTIVE      com.springsource.javax.servlet.jsp.jstl_1.2.0.v20110728
121 ACTIVE      com.springsource.org.apache.taglibs.standard_1.1.2.v20110517
Run Code Online (Sandbox Code Playgroud)

有更多的捆绑包,但那些是相关的.所以,我无法理解出了什么问题.

Spring Source Repository,我从那里下载了bundle,很明显,org.apache.taglibs.standard bundle - Bundle 121,包含了它JstlCoreTLV class.所以,不确定,这里发生了什么.

这是我JSP正在使用的标题(以防万一,它是相关的): -

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> …
Run Code Online (Sandbox Code Playgroud)

java jsp osgi jstl taglib

8
推荐指数
1
解决办法
2万
查看次数

Guice - 使用静态辅助方法将依赖项注入到类中

我还是Guice的新手,之前没有使用任何DI框架.在阅读官方维基和许多其他文件后,我仍然无法完全绕过它.

在我的特定情况下,我想编写一个使用其他(待注入)类的EL taglib函数.由于所有taglib函数都必须声明为static,我不能只通过构造函数或setter @Inject我的依赖项.我想过使用http://code.google.com/p/google-guice/wiki/Injections#Static_Injections中描述的requestStaticInjection()方法但是我无法让它工作并且找不到任何好处教程.

在此先感谢您的帮助,

阿尔曼

java static-methods el taglib guice

8
推荐指数
1
解决办法
2万
查看次数

从较旧的Tomcat版本运行标记库

首先是一些背景.

我正在开发一个Web应用程序.此应用程序作为第三方商业Web应用程序的扩展安装.第三方为我们的应用程序提供了一个SDK,以便与主Web应用程序进行交互.因此,我们无法控制运行应用程序的环境.我们受第三方申请的支配.

现在为了这个问题.

我们的应用程序打包了JSP使用的自定义标记库.第三方应用程序的一个要求是我们只发布预编译的JSP.编译JSP以及必要的.tag文件没有问题.

第三方推出了他们软件的新版本.我们将支持从旧版本的软件到新版本的平滑升级.

旧版本的第三方软件运行在Tomcat 5.5之上.我们的JSP是使用tomcat 5.5 JSP编译器构建的.新版本在Tomcat 7上运行.升级后,我们的扩展程序仍然运行,但标记未正确评估.

标签会发出正确的HTML,但传递给标签的任何属性似乎都会丢失.

作为一个例子,我创建了一个简单的测试标记:

<%@ attribute name="testValue" required="true" %>

<div name="${testValue}" >
    ${testValue}
</div>
Run Code Online (Sandbox Code Playgroud)

这在JSP中使用如下:

<my:testDiv testValue="myNewTestValue" />
Run Code Online (Sandbox Code Playgroud)

在Tomcat 5.5上,它被评估并产生以下内容:

<div name="myNewTestValue" >
    myNewTestValue
</div>
Run Code Online (Sandbox Code Playgroud)

但是,运行Tomcat 7时的代码相同,HTML是输出,但属性不是.请注意,${testValue}已处理但替换为空值,而不是给定的值.

<div name="" >

</div>
Run Code Online (Sandbox Code Playgroud)

如果我使用Tomcat 7编译器编译相同的代码,它会再次工作.

<div name="myNewTestValue" >
    myNewTestValue
</div>
Run Code Online (Sandbox Code Playgroud)

显然,使用Tomcat 7 JSP编译器构建的版本不会在旧版本上运行.鉴于Tomcat 5.5版本不会在新版本上运行,我们没有平滑过渡.

我一直在网上闲逛几周试图找到这个问题,甚至是类似的东西,并且提出的很少.至少没有任何东西能让我找到解决方案.

在Tomcat 7上运行使用Tomcat 5.5编译器编译的标签是否存在已知问题?我需要吟唱一些神奇的咒语吗?

一些额外的信息:

我们正在和Maven一起建设.pom的相关部分:

        <!-- Precompile JSPs -->
<!--    <dependency> -->
<!--        <groupId>org.apache.tomcat</groupId> -->
<!--        <artifactId>tomcat-jasper</artifactId> -->
<!--        <version>7.0.21</version> -->
<!--        <scope>compile</scope> -->
<!--    </dependency> --> …
Run Code Online (Sandbox Code Playgroud)

java jsp taglib tomcat5.5 tomcat7

8
推荐指数
1
解决办法
345
查看次数

自定义taglib未加载Liferay7

我正在将Liferay portlet从6.0迁移到Liferay 7.0,而我遇到的许多障碍之一就是包含了我的自定义taglib.

我遵循以下建议:在Liferay 7中创建自定义taglib,但我的portlet无法加载taglib,记录以下错误:

09:50:48,566 ERROR [http-nio-8080-exec-10][FreeMarkerManager:208] Unable to add taglib my_tags to context
FreeMarker template error:
freemarker.template.TemplateModelException: Error while loading tag library for URI "/META-INF/my_tags.tld" from TLD location "servletContext:/META-INF/my_tags.tld"; see cause exception.
        at freemarker.ext.jsp.TaglibFactory.get(TaglibFactory.java:260)
        at com.liferay.portal.template.freemarker.internal.FreeMarkerManager$TaglibFactoryWrapper.get(FreeMarkerManager.java:647)
        at com.liferay.portal.template.freemarker.internal.FreeMarkerManager.addTaglibSupport(FreeMarkerManager.java:205)
        at com.liferay.taglib.util.ThemeUtil.doIncludeFTL(ThemeUtil.java:276)
        at com.liferay.taglib.util.ThemeUtil.doDispatch(ThemeUtil.java:157)
        at com.liferay.taglib.util.ThemeUtil.includeFTL(ThemeUtil.java:100)
        at com.liferay.taglib.util.ThemeUtil.include(ThemeUtil.java:82)
Run Code Online (Sandbox Code Playgroud)

但是,我的捆绑JAR 确实包含META-INF/my_tags.tld

令我印象深刻的是,当我的JSP加载时,错误不会发生,而是在主题的FreeMarker模板中.显然我的JSP在那时甚至没有被加载.

我的门户网站中的每个页面都会抛出错误,而不仅仅是那些包含我的portlet的页面(如果主题已经无法访问taglib,则会出现这种错误)

捆绑JAR的结构是:

com/
content/  
META-INF/
   +--- resources/
   MANIFEST.MF
   taglib-mappings.properties
   my_tags.tld
OSGI-INF/
WEB-INF/         
Run Code Online (Sandbox Code Playgroud)

由bnd任务生成的MANIFEST.MF包含以下依赖项:

Require-Capability: osgi.extender;osgi.extender="jsp.taglib";uri="/META-INF/my_tags.tld"
Run Code Online (Sandbox Code Playgroud)

该文件taglib-mappings.properties包含:

my_tags=/META-INF/my_tags.tld 
Run Code Online (Sandbox Code Playgroud)

我还尝试将.tld文件放在WEB-INF/tld …

jsp osgi portlet taglib liferay-7

8
推荐指数
1
解决办法
1086
查看次数

如何在MPEG-4文件上设置"媒体创建"日期

我有许多从各种数码相机格式转码的MPEG-4文件,文件系统修改日期是正确的.我想设置"Media Created"标签以匹配.这可以在Windows资源管理器中通过"属性"窗口的"详细信息"选项卡手动完成.设置"已创建媒体"非常有用,因为Windows Live照片库会在此字段中键入其"采取日期"属性.不幸的是,文件数量使得手工设置所有日期变得不切实际.

一些自动化途径有潜力.TagLib#似乎支持所有MP4标签,但是获取更多基本标签的API尚不清楚.另一个角度是Windows shell.据推测,Windows资源管理器正在使用它来编写标签.有一个通过shell 读取示例,但似乎没有用于编写的API.

tags windows-shell taglib taglib-sharp mpeg-4

7
推荐指数
2
解决办法
1万
查看次数