1

独自のタグライブラリを作成しました。tld ファイルを int src/main/resources/META-IN/InputTagDescriptor.tld に置きます (Maven プロジェクトを使用)

<?xml version="1.0" encoding="UTF-8"?>
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>input</shortname>
<info>provides an input tag with escaped value attribute</info>
<uri>http://blubber.com/</uri>
<tag>
    <name>input</name>
    <tagclass>com.vector.extranet.taglib.InputTagHandler</tagclass>
    <info>Creates normal input tag but value will be escaped.</info>
    <attribute>
        <name>name</name>
        <required>true</required>
    </attribute>
    <attribute>
        <name>id</name>
        <required>true</required>
    </attribute>
    <attribute>
        <name>cssClass</name>
        <required>false</required>
    </attribute>
    <attribute>
        <name>maxlength</name>
        <required>false</required>
    </attribute>
    <attribute>
        <name>type</name>
        <required>true</required>
    </attribute>
    <attribute>
        <name>value</name>
        <required>true</required>
    </attribute>
</tag>
</taglib>

私の webapp (liferay ポートレット、mavenized) では、taglib の依存関係を含め、jsp で tld をインポートしました。

<%@ taglib uri="http://blubber.com/InputTagDescriptor.tld" prefix="input" %>

war は次のようにパッケージ化されています: WEB-INF\lib\taglib.jar\META-INF\InputTagDescriptor.tld。しかし、私が得たポートレットを呼び出すと:

12:56:53,486 ERROR [http-bio-8080-exec-12][render_portlet_jsp:157]     org.apache.jasper.JasperException: The absolute uri:
http://blubber.com/InputTagDescriptor.tld cannot be resolved in either web.xml or the jar files deployed with this application

では、どのように機能させるのですか?(web.xml の助けがなくても動作するはずですよね?)

4

1 に答える 1

3

少し遅すぎるかもしれませんが、これをうまく行うことができます。この例をチェックしてください: http://www.codeyouneed.com/how-to-create-a-taglib-with-jsps-for-liferay/

taglib jar がポートレット プロジェクトの依存関係であることを確認してください。これにより、適切にパッケージ化されます。また、最初は拾うのが少し難しいので、liferay を再起動してみてください。Liferay Hook プロジェクト内では、おそらく taglib にアクセスできないことに注意してください。

于 2014-07-14T14:01:25.253 に答える