私はXPageでダイナミックビューパネルを使用しています。数値の書式設定がビュー列で定義された書式に従わないという問題。 私は検索して、番号をフォーマットする方法がカスタマイザビーンを介していることを発見しました。このBeanのコード例をいくつか見てきましたが、どれも数字を含む列の書式設定の例はありませんでした。 誰もこの治療のフォーマットの例を持っていますか?ダイナミックビューパネルの列番号をxページの書式設定
ありがとうございます!
私はXPageでダイナミックビューパネルを使用しています。数値の書式設定がビュー列で定義された書式に従わないという問題。 私は検索して、番号をフォーマットする方法がカスタマイザビーンを介していることを発見しました。このBeanのコード例をいくつか見てきましたが、どれも数字を含む列の書式設定の例はありませんでした。 誰もこの治療のフォーマットの例を持っていますか?ダイナミックビューパネルの列番号をxページの書式設定
ありがとうございます!
ユーザーのロケールに基づいて数値の書式設定を処理するExtendedViewColumnConverter
クラスのgetValueAsString()
メソッドのコードスニペットです。
コードでは、変数currentLocale
にユーザーロケールが含まれていることを前提としています。 currentLocaleはjava.util.Locale.Localeのインスタンスで、これを処理するlogikがあると仮定します。ユーザーBeanの一部としてない場合は、現在のロケールを取得する一つの方法は、これを行うことです。
Locale currentLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
もちろん(つまりDominoViewCustomizer
を拡張)すでに作業カスタマイザBeanを持っている必要があります。
public static class ExtendedViewColumnConverter extends ViewColumnConverter {
...
@Override
public String getValueAsString(final FacesContext context, final UIComponent component, final Object value) {
if (value instanceof Number) {
NumberFormat nf = NumberFormat.getInstance(currentLocale);
DecimalFormat df = (DecimalFormat) nf;
df.setRoundingMode(RoundingMode.HALF_UP);
switch (this.colDef.getNumberFmt()) {
case ViewColumn.FMT_GENERAL: {
// no further formatting needed
break;
}
case ViewColumn.FMT_FIXED: {
df.setMinimumFractionDigits(this.colDef.getNumberDigits());
df.setMaximumFractionDigits(this.colDef.getNumberDigits());
break;
}
default: {
// no further formatting needed
break;
}
}
return df.format(value);
}
}
...
}
ありがとうございます。変数currentlocaleはどこにありますか?それは財産ですか? –
私はcurrentLocaleの説明を追加しました –
申し訳ありませんが、私はJavaでの経験はほとんどありません。私はあなたのコードを私のbeanのカスタマイザに入れて、 'colDefは解決できない、またはフィールドではない'というエラーをスイッチに与えています:switch(this.colDef.getNumberFmt())。 –