我正在尝试使用自定义格式化程序将布尔值转换为“是”或“否”并遇到障碍。
我的IDE(Eclipse)没有指出任何错误,但是当我尝试编译时,我收到了
[错误]注释错误:无法解析foobar.client.formatter.YesNoFormatter - 异常:ClassNotFoundException
后面是一些似乎源于此异常的其他异常。我理解ClassNotFoundException是什么意思但是我无法弄清楚为什么我会得到它,因为我的代码显示,YesNoFormatter类位于foobar.client.formatter中,我可以通过
访问它GWT.log("True: " + YesNoFactory.getFormat().format(Boolean.TRUE);
我正在使用GXT 3.1.0和GWT 2.6.1。
有人知道为什么我会收到这个例外吗?在http://docs.sencha.com/gxt-guides/3/utility/xtemplates/XTemplates.html给出的例子没有提到任何关于这些需要在特定位置的类的东西(据我所知),所以我很茫然。
的EntryPoint:
package foobar.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.sencha.gxt.core.client.XTemplates.FormatterFactories;
import com.sencha.gxt.core.client.XTemplates.FormatterFactory;
public class TestClass implements EntryPoint {
@FormatterFactories(@FormatterFactory(factory=YesNoFactory.class, name="yesNo"))
public interface Renderer extends XTemplates {
@XTemplate(source="yesNo.html")
SafeHtml render(Boolean b);
}
@Override
public void onModuledLoad() {
GWT.log("True: " + YesNoFactory.getFormat().format(Boolean.TRUE);
Renderer r = GWT.create(Renderer.class);
Window.alert(r.render(true).asString());
}
}
YESNO:
package foobar.client.formatter;
import com.sencha.gxt.core.client.XTemplates.Formatter;
public class YesNo implements Formatter<Boolean> {
@Override
public String format(Boolean data) {
if (data == null) {
return null;
}
return (data) ? "Yes" : "No";
}
}
YesNoFactory:
package foobar.client.formatter;
public class YesNoFactory {
public static YesNo getFormat() {
return new YesNo();
}
}
<?xml version="1.0 encoding="UTF-8"?>
<module>
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.sencha.gxt.GXT'/>
<entry-point class='foobar.client.TestClass'/>
<source path='client'/>
</module>
foobar的/客户端/ yesNo.html:
{b:yesNo()}
答案 0 :(得分:0)
我的格式化程序类(YesNo和YesNoFactory)显然必须位于编译客户端代码之前编译的位置。在我将这些课程移到我的共享课程之后package - 包含客户端和服务器使用的代码的包 - 一切正常。
这在http://docs.sencha.com/gxt-guides/3/utility/xtemplates/XTemplates.html指南的XTemplates部分中并不明显,它似乎没有指定需要定位用于自定义格式化程序的文件的位置。也许这应该是显而易见的,但不是我。