我使用标准的viewPanel在XPage中显示视图数据。 该应用程序正在使用Bootstrap3.2.0。
为了使呈现的表响应,我向头部和列添加了一些引导类。
package com.db.nsw.izt;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class UserNameBean {
private String fName = "";
private String lName = "";
public String getfName() {
return fName;
}
public void setfName(String fName) {
this.fName = fName;
}
public String getlName() {
return lName;
}
public void setlName(String lName) {
this.lName = lName;
}
public String submitRequest(){
System.out.println("@@@ " + fName + " | " + lName);
return "response";
}
}
当我调整浏览器窗口大小时,列被正确隐藏,但标题仍然存在。显然,styleClasses不会添加到th标签,而是添加到th。
内的标签<xp:viewColumn columnName="StatusDescription"
id="viewColumn4" styleClass="hidden-xs hidden-sm">
<xp:viewColumnHeader value="Status"
id="viewColumnHeader4" styleClass="hidden-xs hidden-sm">
</xp:viewColumnHeader>
</xp:viewColumn>
结果是表头与显示的数据不同步。
有人知道如何在th标签中获得样式类吗?
答案 0 :(得分:3)
在我看来,视图类渲染器或视图列定义属性或两者都搞乱了。
您可能希望<xp:viewColumnHeader styleClass="hidden-xs hidden-sm">
控制th
样式类,但正如您所看到的那样。
为了实现您要执行的操作,您可以尝试为DataTableRendererEx
的viewPanel扩展渲染器类。但是这种方法对你来说可能看起来很古怪,而且个人认为IBM认为IBM已经将许多类的方法声明为私有,这会迫使你重写代码的大部分代码,只是为了让你有所帮助。你需要改变。
在代码实际上为headerClass
寻找xp:viewColumn
属性的意义上,会有一些希望。但是,瞧,该属性没有为组件明确定义,事实上,您没有在Designer的viewColumn的其他属性中看到它。即使您通过xsp源代码透视图明确地编写它,Designer也不允许您这样做,它将无法编译。您可以要求IBM修复viewColumn组件的属性定义文件,但坦率地说我不知道它是多么可行:XPages处于失修状态。
所以我能为您提供的是一种解决方法。有一种方法可以通过主题定义潜入属性(我写了一些关于它的in this blog article)。因此,为了使用此变通方法,您必须使用主题。如果您已经拥有它,您只需添加此规则:
<control>
<name>Column.View.Hidden</name>
<property>
<name>headerClass</name>
<value>hidden-xs hidden-sm</value>
</property>
<property>
<name>styleClass</name>
<value>hidden-xs hidden-sm</value>
</property>
</control>
控件名称是任意的。通常,我使用对照系列的原始名称 - Column.View
- 并在此情况下附加变体的名称 - .Hidden
。如果它只是Column.View
,则规则将适用于所有viewColumns。使用Column.View.Hidden
我有一个规则,我可以根据具体情况申请。
此时,我只需要为我想要表现不同的列指定不同的主题Id(themeId
属性)。
<xp:viewColumn columnName="columnName" id="viewColumn1" themeId="Column.View.Hidden">
<xp:viewColumnHeader value="columnHeaderName" id="viewColumnHeader1" />
</xp:viewColumn>