Jsf 2 以编程方式从HtmloutMetargetLink获取值
我们有一个PrimeFaces数据表,希望导出到Excel。列的定义如下:Jsf 2 以编程方式从HtmloutMetargetLink获取值,jsf-2,primefaces,Jsf 2,Primefaces,我们有一个PrimeFaces数据表,希望导出到Excel。列的定义如下: <p:column headerText="#{msg['common.number.label']}" width="60"> <h:link id="insiderlist-id-action-link" value="#{value.id}" outcome="/view/insiderlistmgmt/insiderLi
<p:column headerText="#{msg['common.number.label']}"
width="60">
<h:link id="insiderlist-id-action-link"
value="#{value.id}"
outcome="/view/insiderlistmgmt/insiderListManager"
target="_blank">
<f:param name="id" value="#{insiderListManager.getEncryptedValue(value.id.toString())}" />
</h:link>
</p:column>
<p:column headerText="#{msg['common.name.label']}"
width="120">
<h:link id="insiderlist-name-action-link"
value="#{value.name}"
outcome="/view/insiderlistmgmt/insiderListManager"
target="_blank">
<f:param name="id" value="#{insiderListManager.getEncryptedValue(value.id.toString())}" />
</h:link>
</p:column>
你看到的System.out总是打印:
问题:
如何以编程方式查找如上所述的显示/计算的值?自定义导出器是不必要的,因为HtmlOutput实现了ValueHolder,默认导出器已经支持它,只需调用getValue就足够了。如果仍然获取空字符串,则与显示期间相比,数据模型更有可能在导出期间发生更改。由于Excel输出不同,因此需要自定义导出器。客户希望展平子表,而不是将它们嵌套到另一个导出器中。导出器是伪代码,MyExporter实际上是PrimeFaces Extensions子类。OK。您是否检查了数据模型的完整性?那将是我的第一个嫌疑犯。到目前为止,代码看起来还不错,虽然有点笨拙,但getValue已经足够了。是的,哈哈,代码很笨拙。在几件事情没有成功之后,这纯粹是绝望。然后我必须检查数据模型。谢谢你的提示。我想知道为什么有人会在导出过程中更改数据模型。这实际上是一个新的请求。所以,bean可能是请求范围的,和/或它在getter方法或延迟加载程序中执行依赖于请求参数的业务逻辑。
public MyExporter extends AnotherExporter
{
@Override
protected String exportValue( FacesContext context, UIComponent component )
{
if ( component instanceof HtmlOutcomeTargetLink )
{
ELContext elContext = context.getELContext();
HtmlOutcomeTargetLink link = ( HtmlOutcomeTargetLink ) component;
ValueExpression valueExpression = link.getValueExpression( "value" );
Object expressionValue = valueExpression.getValue( elContext );
Object linkValue = link.getValue();
System.out.println( "<h:link value=" + expressionValue + "/" + linkValue + ">" );
... // return correct value etc.
}
return super.exportValue( context, component );
}
12:13:07,344 INFO [] (160) <h:link value=null/null>
12:13:07,344 INFO [] (160) <h:link value=null/null>
12:13:07,356 INFO [] (160) <h:link value=null/null>
12:13:07,357 INFO [] (160) <h:link value=null/null>
12:13:07,357 INFO [] (160) <h:link value=null/null>
12:13:07,371 INFO [] (160) <h:link value=null/null>