Плагин BadgeFormatter не соответствует условиям в JogetJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Плагин BadgeFormatter не соответствует условиям в Joget

Сообщение Anonymous »

В настоящее время я разрабатываю собственный плагин форматирования списка данных для Joget (DX8) под названием BadgeFormatter. Плагин предназначен для отображения значений с различными типами значков Bootstrap в зависимости от заданных условий. Однако я столкнулся с проблемой, когда значения условий не сопоставляются правильно, что приводит к применению неправильных типов значков.
Вот основной код класса BadgeFormatter:

Код: Выделить всё

package org.joget.tutorial;

import java.util.Map;
import org.joget.apps.app.service.AppUtil;
import org.joget.apps.datalist.model.DataList;
import org.joget.apps.datalist.model.DataListColumn;
import org.joget.apps.datalist.model.DataListColumnFormatDefault;
import org.joget.commons.util.LogUtil;

public class BadgeFormatter extends DataListColumnFormatDefault {

@Override
public String format(DataList dataList, DataListColumn column, Object row, Object value) {
String result = (value != null) ? value.toString() : "";

if (!result.isEmpty()) {
try {
String badgeType = getPropertyString("badgeType");
if (badgeType == null || badgeType.isEmpty()) {
badgeType = "primary";
}

Object[] conditionsArray = (Object[]) getProperty("conditions");

LogUtil.info(getClassName(), "Processing value: " + result);
if (conditionsArray != null) {
LogUtil.info(getClassName(), "Conditions array length: " + conditionsArray.length);
} else {
LogUtil.info(getClassName(), "Conditions array is null");
}

if (conditionsArray != null && conditionsArray.length > 0) {
for (Object conditionObj : conditionsArray) {
if (conditionObj instanceof Map) {
Map condition = (Map) conditionObj;

LogUtil.info(getClassName(), "Condition map: " + condition.toString());

String conditionValue = condition.get("value");
String conditionBadge = condition.get("badge");

LogUtil.info(getClassName(), "Checking condition: Value=" + conditionValue + ", Badge=" + conditionBadge);

if (conditionValue != null && conditionBadge != null) {
if (conditionValue.trim().equalsIgnoreCase(result.trim())) {
badgeType = conditionBadge.toLowerCase();
LogUtil.info(getClassName(), "Match found! Applying badge: " + badgeType);
break;
}
}
}
}
}

LogUtil.info(getClassName(), "Final badge type applied: " + badgeType);
result = "" + result + "";

} catch (Exception e) {
LogUtil.error(getClassName(), e, "Error in BadgeFormatter plugin");
result = ""  + result + "";
}
}

return result;
}
}

Конфигурация плагина определяется в файле JSON, в котором указаны условия:

Код: Выделить всё

[
{
"title": "Badge Formatter Configuration",
"properties": [
{
"name": "badgeType",
"label": "Default Badge Type",
"type": "selectbox",
"options": [
{"value": "primary", "label": "Primary"},
{"value": "secondary", "label": "Secondary"},
{"value": "success", "label": "Success"},
{"value": "danger", "label": "Danger"},
{"value": "warning", "label": "Warning"},
{"value": "info", "label": "Info"},
{"value": "light", "label": "Light"},
{"value": "dark", "label": "Dark"}
],
"required": true
},
{
"name": "conditions",
"label": "Badge Conditions",
"type": "grid",
"columns": [
{"name": "value", "label": "Value", "type": "textfield"},
{
"name": "badge",
"label": "Badge Type",
"type": "selectbox",
"options": [
{"value": "primary", "label": "Primary"},
{"value": "secondary", "label": "Secondary"},
{"value": "success", "label": "Success"},
{"value": "danger", "label": "Danger"},
{"value": "warning", "label": "Warning"},
{"value": "info", "label": "Info"},
{"value": "light", "label": "Light"},
{"value": "dark", "label": "Dark"}
]
}
]
}
]
}
]

Вот соответствующий вывод журналов при обработке значения «Утверждено»:

Код: Выделить всё

INFO  07 Oct 2024 17:35:56 org.joget.tutorial.BadgeFormatter - Processing value: Approved
INFO  07 Oct 2024 17:35:56 org.joget.tutorial.BadgeFormatter - Conditions array length: 1
INFO  07 Oct 2024 17:35:56 org.joget.tutorial.BadgeFormatter - Condition map: {undefined=approved}
INFO  07 Oct 2024 17:35:56 org.joget.tutorial.BadgeFormatter - Checking condition: Value=null, Badge=null
INFO  07 Oct 2024 17:35:56 org.joget.tutorial.BadgeFormatter - Final badge type applied: info

Я ожидал, что если данные, переданные в форматтер, будут соответствовать определенным значениям, определенным в условиях, соответствующий тип значка будет применен правильно.
Однако во время отладки я обнаружил, что массив условий регистрируется правильно, но значения условий возвращаются в журналах как нулевые. Вместо применения ожидаемого типа значка плагин по умолчанию использовал значок «информация», что указывает на то, что он не соответствует каким-либо условиям.
Я также заметил, что в зарегистрированной карте условий отображается undefined=approved. , что предполагает, что ключи в условии могут быть определены неправильно. Мне нужна информация о том, почему условия не распознаются и как обеспечить применение правильных типов значков на основе значений, переданных в форматтер.

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-in-joget
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»