我尝试在一个简单的自定义组件中设置一个pagelink的动态css类值,并且找不到任何方法。带动态css类的挂毯pagelink
我的组件......
<!-- my component template 'testLink' -->
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<!-- maybe I can set here something dynamic like that ...
<t:pagelink page="mytest" t:id="myLink" class="${myDynCss}">
... but in this case I need to pass the parameter what link is handled
-->
<t:pagelink page="mytest" t:id="myLink">
I want dynamic css class
</t:pagelink>
</html>
组件Java代码...
public class TestLink {
@Parameter(required=true)
private int activeId;
@Component
PageLink myLink;
public int getActiveId() {
return activeId;
}
public void setupRender()
{
// I try to set some class attribute here but I find no matching function in myLink
// myLink.setCssStyle();
}
public String getMyDynCss(int currentLinkId) {
if (currentLinkId==activeId)
return "active";
else
return "xxx";
}
}
包括该组件的网页...
<html t:type="layout" title="Test" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">
<p:app_navigation>
<t:testLink activeId="1000"/>
</p:app_navigation>
</html>
也许一个愚蠢的新手问题,但我仍然有困难以Tapestry方式思考。 欢迎提供任何帮助或有用的提示。
而最好使用prop:binding而不是$ {...},例如class =“prop:myDynCss”,http://tapestry.apache.org/component-parameters.html#ComponentParameters-dontUseSyntax – sody
@sody我认为你在prop:binding这里是不正确的。对于组件上定义的参数绑定,这是正确的,而不是简单地将值打印到类属性的DOM属性中。 – joostschouten
@joostschouten对于迟到的答复感到遗憾......并且感谢解决方案。我会试试看。与此同时,另一种方式与afterRender事件。 – OkieOth