我试图从发布到Tridion Broker的组件加载一些Custom Meta.
这是2009 SP1
我可以看到Custom_Meta表中的组件,其查询如下:
SELECT * FROM [Tridion_Broker].[dbo].[CUSTOM_META] WHERE ITEM_ID = 204221
Run Code Online (Sandbox Code Playgroud)
但是使用下面的代码,我在GetMeta的行上得到一个Java Runtime异常.我注意到如果我的queryStringId是一个正确的TCM ID,那么它将抛出excpetion但是如果我只是把项目ID它将返回null.
string queryStringId = HttpUtility.UrlDecode(Request.QueryString["component_uri"]);
string pageId = ((BasePage) Page).PageTcmId;
int publicationId = int.Parse(pageId.Split(':')[1].Split('-')[0]);
using (var cmf = new ComponentMetaFactory(publicationId))
{
IComponentMeta cm = cmf.GetMeta(queryStringId);
if(cm != null)
{
VideoId = cm.CustomMeta.GetValue("video_url").ToString();
}
else
{
litMessage.Visible = true;
}
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
[RuntimeException]
Codemesh.JuggerNET.NTypeValue.Throw(Int64 inst) +351
Codemesh.JuggerNET.JavaClass.ThrowTypedException(Int64 inst) +1278
Codemesh.JuggerNET.JavaMethod.CallObject(JavaProxy jpo, JavaMethodArguments args) +551
Codemesh.JuggerNET.JavaMethod.CallObject(JavaProxy jpo, Type declaredType, Boolean bLeaf, JavaMethodArguments jargs) +50
Com.Tridion.Meta.ComponentMetaFactory.GetMeta(Int32 componentId) …Run Code Online (Sandbox Code Playgroud) tridion ×1