Иногда я использую следующее:
@eval BORDER_SIZE_PLUS_2 2+2+"px"; /* GWT evaluates this at compile time! */
Как ни странно, это работает, только если вы не ставите пробелы между оператором +
и операндами. Кроме того, в @eval вы не можете использовать константы, которые ранее были определены @def. Однако вы можете использовать константы, которые определены как статические поля в одном из ваших классов Java:
@eval BORDER_SIZE_PLUS_2 com.example.MyCssConstants.BORDER_SIZE+2+"px";
Или вы можете позволить вычислению полностью выполнить Java:
@eval WIDTH com.example.MyCssCalculations.width(); /* static function,
no parameters! */
@eval HEIGHT com.example.MyCssCalculations.height();
.style {
width: WIDTH;
height: HEIGHT;
}
Но то, что я на самом деле хотел бы сделать, очень похоже на ваше предложение:
@def BORDER_SIZE 2;
.style {
width: value(BORDER_SIZE + 2, 'px'); /* not possible */
height: value(BORDER_SIZE + 3, 'px');
}
Я не думаю, что это возможно в GWT 2.0. Может быть, вы найдете лучшее решение - вот страница Dev Guide на эту тему.