При подходе classloader собственной разработки: В то время как определенно хороший способ узнать о classloaders существует что-то позвонившее "classloader ад", главным образом известный людям, которые боролись с ним когда дело доходит до использования в больших проектах. Конфликтующие классы легко представить и трудно решить.
И существует серьезное основание, почему затмение сделало перемещение к годы несколько OSGI назад. Так, если его больше тогда любимый проект, бросьте серьезный взгляд в OSGi. Который стоит посмотреть на. Вы узнаете о classloaders ПЛЮС появление technolgy стандарт.
На сервере, прежде чем возвращать данные в виде XML / JSON или чего-то еще, попробуйте установить значения DBNull равными пустой строке.
В качестве альтернативы , если допустимо отображение значений NULL как 0, вы можете изменить свой SQL в следующих строках:
SELECT IsNull(my_amount, 0)
I would not rewrite the custom formatter -- but override it (or make a new one)! That way, when a new version of jQgrid comes out, you don't overwrite your custom wrapper.
For example, my users don't want to see the value if it is 0, so I do this:
$.fn.fmatter.currency = function (cellval, opts) {
if (cellval == 0) {
return '';
}
var op = $.extend({},opts.currency);
if(!isUndefined(opts.colModel.formatoptions)) {
op = $.extend({},op,opts.colModel.formatoptions);
}
if(isEmpty(cellval)) {
return op.defaultValue;
}
return $.fmatter.util.NumberFormat(cellval,op);
};
But I could also call it:
$.fn.fmatter.currencyNoZero
In your case, I would do this:
$.fn.fmatter.currency = function (cellval, opts) {
if (cellval == null) {
return '';
}
var op = $.extend({},opts.currency);
if(!isUndefined(opts.colModel.formatoptions)) {
op = $.extend({},op,opts.colModel.formatoptions);
}
if(isEmpty(cellval)) {
return op.defaultValue;
}
return $.fmatter.util.NumberFormat(cellval,op);
};