这几乎是从IBM的Mastering Grails系列中逐字记录下来的.
DateTagLib.groovy:
class DateTagLib {
def thisYear = {
out << Calendar.getInstance().get(Calendar.YEAR)
}
}
Run Code Online (Sandbox Code Playgroud)
DateTagLibTests.groovy:
class DateTagLibTests extends TagLibUnitTestCase {
def dateTagLib
protected void setUp() {
super.setUp()
dateTagLib = new DateTagLib()
}
void testThisYear() {
String expected = Calendar.getInstance().get(Calendar.YEAR)
assertEquals("years do NOT match", expected, dateTagLib.thisYear())
}
protected void tearDown() {
super.tearDown()
}
}
Run Code Online (Sandbox Code Playgroud)
grails test-app DateTagLib 输出:
-------------------------------------------------------
Running 1 unit test...
Running test DateTagLibTests...
testThisYear...FAILED
Tests Completed in 359ms ...
-------------------------------------------------------
Tests passed: 0 …Run Code Online (Sandbox Code Playgroud) 我正在使用TagLib(在Windows上,使用MingW构建).我想让TagLib识别MP3文件中没有ID3v1或ID3v2信息.根据TagLib文档,当文件中没有ID3v2信息时,MPEG File对象中的ID3v2Tag()函数应返回NULL指针.
不幸的是,这种情况并未发生.我有一些我在我的代码中使用的测试MP3文件(我已经提供了文件):
这是我的代码.
#include <iostream>
#include <mpeg/mpegfile.h>
#include <mpeg/id3v2/id3v2tag.h>
using namespace std;
int main()
{
cout << "Test." << endl;
TagLib::MPEG::File a("tests/other/blank.mp3");
TagLib::MPEG::File b("tests/id3v2/only_album_id3v2.mp3");
TagLib::MPEG::File c("tests/id3v1/only_album_id3v1.mp3");
TagLib::ID3v2::Tag * at = a.ID3v2Tag();
TagLib::ID3v2::Tag * bt = b.ID3v2Tag();
TagLib::ID3v2::Tag * ct = c.ID3v2Tag();
cout << at->album() << endl;
cout << bt->album() << endl;
cout << ct->album() << endl;
cout << "The program is done.";
return 0;
} …Run Code Online (Sandbox Code Playgroud) 我不想编译动态库,所以这个问题没用.
我下载了taglib并使用以下方法编译它:
cmake -DENABLE_STATIC=ON -DENABLE_STATIC_RUNTIME=ON -DWITH_MP4=ON -G "Visual Studio 10"
Run Code Online (Sandbox Code Playgroud)
这会生成Visual Studio解决方案,我可以编译"tag"项目,该项目在taglib/Release中生成tag.lib.
当我尝试在测试应用程序中使用库时出现问题 - 没什么,只是一个简单的测试:
#include "stdafx.h"
#include "fileref.h"
int _tmain(int argc, _TCHAR* argv[])
{
TagLib::FileRef d("");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下链接器错误:
Error 1 error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall TagLib::FileRef::~FileRef(void)" (__imp_??1FileRef@TagLib@@UAE@XZ) C:\...\taglib_test\taglib_test\taglib_test.obj taglib_test
Error 2 error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall TagLib::FileRef::FileRef(class TagLib::FileName,bool,enum TagLib::AudioProperties::ReadStyle)" (__imp_??0FileRef@TagLib@@QAE@VFileName@1@_NW4ReadStyle@AudioProperties@1@@Z) C:\...\taglib_test\taglib_test\taglib_test.obj taglib_test
Error 4 error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall TagLib::FileName::FileName(char const *)" (__imp_??0FileName@TagLib@@QAE@PBD@Z) C:\...\taglib_test\taglib_test\taglib_test.obj taglib_test …Run Code Online (Sandbox Code Playgroud) TagLib 使用 CMake 构建系统来创建 Visual Studio 2010 解决方案和项目文件。
生成的项目唯一的问题是字符集设置为 MBCS,而我希望它是 Unicode。
有没有办法通过 CMake 设置这个选项?
我目前正在使用它在 VS2010 命令提示符下在 Windows 上构建 taglib:
cmake -DWITH_MP4=ON -DENABLE_STATIC=ON .
Run Code Online (Sandbox Code Playgroud) 我为它创建了一个自定义组件SelectOneRadio,并将其注册xyz.taglib.xml到目前为止它的工作原理.唯一的问题是我的NetBeans无法在自动完成中看到我的标记属性.例如,如果我layout="pageDirection"在我的自定义组件中,那么它会正确渲染,但是当我(Ctrl +空格)我看不到时layout,value...属性.这里是我在我注册我的自定义组件WEB-INF/faces-config.xml,我有
<component>
<component-type>com.xyz.om.ui.component.SelectOneRadio</component-type>
<component-class>
com.xyz.om.ui.component.SelectOneRadio
</component-class>
<component-extension>
<component-family>com.xyz.om.ui.component.SelectOneRadio</component-family>
<renderer-type>com.xyz.om.ui.renderer.SelectOneRadioRenderer</renderer-type>
</component-extension>
</component>
<render-kit>
<renderer>
<component-family>com.xyz.om.ui.component.SelectOneRadio</component-family>
<renderer-type>com.xyz.om.ui.renderer.SelectOneRadioRenderer</renderer-type>
<renderer-class>
com.xyz.om.ui.renderer.SelectOneRadioRenderer
</renderer-class>
</renderer>
</render-kit>
Run Code Online (Sandbox Code Playgroud)
在我WEB-INF/xyz.taglib.xml,我有
<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
version="2.0">
<namespace>http://example.com/ui</namespace>
<tag>
<tag-name>selectOneRadio</tag-name>
<component>
<component-type>com.xyz.om.ui.component.SelectOneRadio</component-type>
<renderer-type>com.xyz.om.ui.renderer.SelectOneRadioRenderer</renderer-type>
</component>
</tag>
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)
所以我注册xyz.taglib.xml在web.xml如下
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/xyz.taglib.xml</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
完成此步骤后,如果我在自定义组件上按Ctrl +空格(Netbeans),我只能看到class, id, parent , rendered, rendererType, transient.所以我尝试xyz.tld在WEB-INF下创建一个这样的
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee …Run Code Online (Sandbox Code Playgroud) 我正在尝试从ubuntu 12.04上的taglib 1.8编译一个例子http://taglib.github.com/
我将一个示例复制到目录中,fileref.h并尝试用g ++编译它
cp taglib-1.8/examples/tagreader.cpp taglib-1.8/taglib
cd taglib-1.8/taglib/
g++ -o testreader.exe tagreader.cpp
tagreader.cpp:28:21: fatal error: fileref.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
我如何在ubuntu上编译taglib?
编辑
嗨Lukas - 感谢您的回复.我想制作一个简单的cli程序,将id3标签写入mp3文件(参见/sf/ask/925126611/ -and-artist-and-the-id3v2).
到目前为止,我只是解开了taglib 1.8.
(1)如何在ubuntu 12.04上构建taglib?当我尝试第二个命令时,我收到以下错误
Package taglib was not found in the pkg-config search path.
Perhaps you should add the directory containing `taglib.pc'
to the PKG_CONFIG_PATH environment variable
No package 'taglib' found
tagreader.cpp:28:21: fatal error: fileref.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
但是文件 …
我收到以下错误:

我有的taglib声明:
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)
我也在项目库文件夹中包含了jstl.jar,如上所示.那可能是其他可能的原因.
我正在关注一个关于spring的教程,我应该在控制器中设置一个变量,以便在jsp中打印呈现请求.代码如下:
@Controller
public class HelloController {
@RequestMapping(value="/hello.htm")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String now = (new Date()).toString();
return new ModelAndView("WEB-INF/views/hello.jsp", "now", now);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,hello.jsp代码如下:
<%@ page session="true"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<body>
<p>Greetings, it is now <c:out value="${now}" /></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我希望得到一个显示这个的HTML:
Greetings, it is now Mon Fri Dec 06 00:39:35 CET 2013
Run Code Online (Sandbox Code Playgroud)
但我得到的只是:
Greetings, it is now ${now}
Run Code Online (Sandbox Code Playgroud)
我已经检查了两次(甚至更多!)但是一切似乎都像教程所说的那样但是必须有一些东西缺失,我希望......
我的代码出了什么问题?
我有一个taglib,它依赖于javascript文件.我想利用资产管道在我的taglib中包含这个文件.
这可能吗?
资产管道是否具有可以从taglib中调用的任何函数,提供与通过在视图中调用以下内容相似的功能:
<asset:javascript src="application.js"/>
Run Code Online (Sandbox Code Playgroud)
谢谢.
问题标题足以解释除了我尝试的尝试:
<g:link controller="staff" action="all" <g:if test="${actionName=='all' }">class="active"</g:if> >Overview</g:link>
Run Code Online (Sandbox Code Playgroud)
错误 500
类:org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException 消息Grails 标记 [g:link] 未关闭
<g:link controller="staff" action="all" class="<g:if test="${actionName=='all' }">active</g:if>" >Overview</g:link>
Run Code Online (Sandbox Code Playgroud)
错误 500 Class org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException 消息属性值必须被引用(controller="staff" action="all" class="
X(在本例中)= 活动