我已經解決了這個問題,通過創建一個SharedNumberFormat,然後爲從未使用的服務器版本創建一個空的客戶端存根。
這裏是我的SharedNumberFormat.java,你猜對了它,可以在共享的代碼中使用和做工精細的客戶端和服務器端:
import java.text.DecimalFormat;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.NumberFormat;
/**
* The purpose of this class is to allow number formatting on both the client and server side.
*/
public class SharedNumberFormat
{
private String pattern;
public SharedNumberFormat(String pattern)
{
this.pattern = pattern;
}
public String format(Number number)
{
if(GWT.isClient())
{
return NumberFormat.getFormat(pattern).format(number);
} else {
return new DecimalFormat(pattern).format(number.doubleValue());
}
}
}
然後我踩滅了java.text.DecimalFormat中實施在我的超級來源:
package java.text;
/**
* The purpose of this class is to allow Decimal format to exist in Shared code, even though it is never called.
*/
@SuppressWarnings("UnusedParameters")
public class DecimalFormat
{
public DecimalFormat(String pattern) {}
public static DecimalFormat getInstance() {return null;}
public static DecimalFormat getIntegerInstance() {return null;}
public String format(double num) {return null;}
public Number parse(String num) {return null;}
}
我在那裏有額外的方法,因爲我用的類服務器端和編譯器在一個合適的關於它得到,如果他們不存在。
最後,不要忘記你的超級源代碼添加到* .gwt.xml:
<super-source path="clientStubs"/>
感謝@Bhat,我認爲這可能是這種情況。多麼不幸:-( – luketorjussen