2016-06-29 16 views
0

現在、GWTを使用してWebアプリケーションを開発中です。特定のビューについては、GWT DataGridウィジェットを使用しなければなりませんでした。私はCSSスタイルを適用するのに苦労していたので、ヘッダーや他の部分に適用されている特定のスタイルを、ページを検査しながらその名前をフェッチすることによって再配置することに決めました。オーバーライドされたGWT配備後に適用されないCSSスタイル

この私が私のカスタムCSSスタイルシートに置くものです:「!重要な」

.com-google-gwt-user-cellview-client-DataGrid-Style-dataGridEvenRow { 
    background-color: #444444 !important; 
} 
.com-google-gwt-user-cellview-client-DataGrid-Style-dataGridEvenRowCell { 
    border: 2px solid #4d4d4d !important; 
} 
.com-google-gwt-user-cellview-client-DataGrid-Style-dataGridOddRowCell { 
    border: 2px solid #4d4d4d !important; 
} 
.com-google-gwt-user-cellview-client-DataGrid-Style-dataGridOddRow { 
    background-color: #4d4d4d !important; 
} 
.com-google-gwt-user-cellview-client-DataGrid-Style-dataGridHeader { 
    color: #aaaaaa !important; 
    text-shadow: #4d4d4d 0px 0px 0 !important; 
    padding: 0px !important; 
} 
.com-google-gwt-resources-client-CommonResources-InlineBlockStyle-inlineBlock { 
    background-color: #4d4d4d !important; 
} 

は、私が知っているが、最後のはずノートの何が、すべてとすべては私が上書きされてきたということですデフォルトのスタイルであり、 "スーパーデベロッパーモード"でアプリケーションを実行すると効果的です。

問題は、.warファイルを展開するときに発生します。私のスタイルシートのすべてのカスタムスタイルは、私がオーバーライドしたものを除いて正しく適用されます。ページを読み込んだときにChromeコンソールにエラーが表示されず、ページを検査するときにそのスタイルが表示されないように見えます。

ここで何が間違っていたか、どのように修正するのかは誰にも分かりますか?私はWeb開発に慣れておらず、初めてWebアプリケーションをコーディングすることに注意してください。次に、インターフェイスを作成

.dataGridHoveredRowCell{} 
.dataGridHoveredRow {} 
.dataGridOddRowCell {} 
.dataGridEvenRowCell {} 
.dataGridOddRow {} 
.dataGridEvenRow {} 
.dataGridSelectedRowCell {} 
.dataGridCell {} 
.dataGridSelectedRow {} 
.dataGridHeader {} 

は、例えば、「DataGridPatch.css」と呼ばれる新しいCSSのシートを作成し、同様に必要なクラスが含まれます:

答えて

1

あなたの問題は、スタイルがdev modで難読化されていないので、.com-google-gwt-user-cellview-client-DataGrid-Style-dataGridEvenRowのように見えます。 warファイルをコンパイルしてデプロイすると、すべてのファイルは通常難読化され、.GKY5KDJCIのようになります。プロダクションではスタイルをオーバーライドしていません。
gwt.xmlファイルで難読化レベルを変更するには、次のプロパティを使用します。
<set-configuration-property name="CssResource.style" value="pretty"/> その他の利用可能なオプションは、debug、stable、stable-shorttype、stable-notypeです。デフォルトは難読化されています。とにかくYoussef Lahoudが提案したapporachに従い、あなたのDataGrid用のカスタムCSSリソースを提供する必要があります。

+0

ありがとうTobika!クラス名の接頭辞がまだわかりにくかった "かなり"の値では動作しませんでしたが、 "安定した"値で動作しました!私はYoussefのソリューションがセキュリティ上の目的では優れていると思っていますが、同僚が使用するツールで作業しているだけで、私たちのネットワーク内でしか利用できません。 – h3X3n

+0

セキュリティだけでなくパフォーマンスも向上します。 CssResourceを使用することで、コンパイラはすべてCSSを最小限に抑え、アプリの初期読み込み時間を短縮することができます。私はテスト目的のためだけにこのスタイル設定を使用することをお勧めします... – Tobika

1

は、私はあなたが正しくクライアント・バンドルを使用してデータグリッドのスタイルを提案します:

public interface CustomDataGridStyle extends DataGrid.Style{} 

public interface TableResources extends DataGrid.Resources { 
     @Override 
     @Source(value = {CustomDataGridStyle.DEFAULT_CSS, "DataGridPatch.css"}) 
     CustomDataGridStyle dataGridStyle(); 
} 

と次のように単純にデータグリッドをインスタンス:

dataGrid = new DataGrid<Map<String, String>>(1, GWT.<TableResources> create(TableResources.class)); 
関連する問題