Проблема с html

Violence

Гений мысли
Проверенный
Сообщения
1 047
Розыгрыши
1
Репутация
2 246
Реакции
1 302
Баллы
1 808
Мучался 3 часа , выручайте ... :*(

Суть такова : Есть баффер в кб , там есть переменная которая отображает ваши схемы пусть это будет скажем %scheme% так же есть отдельные темплейты с кнопками для удаления схем и сама схема с названием т.е
Код:
<button action="{bypass}" value="{scheme_name}" width=75 height=15 fore="L2UI_CT1.ListCTRL_DF_Title" back="l2ui_ct1.ListCTRL_DF_Title_Down">
<button action="{delete}" value="Удалить" width=75 height=15 fore="L2UI_CT1.ListCTRL_DF_Title" back="l2ui_ct1.ListCTRL_DF_Title_Down">
Мне не понравился дизайн и я решил сделать по своему , у меня почти получилось за исключением того что он мне отображает "null" хотя в темплейте %scheme% его нет.

Как хотелось бы что это работало : Это index баффера
Код:
<table><tr><td>%scheme%</td></tr></table>
А это уже темплейт %scheme%
Код:
<table><tr>
<td><button action="{bypass}" value="{name}" width=75 height=15 fore="L2UI_CT1.ListCTRL_DF_Title" back="l2ui_ct1.ListCTRL_DF_Title_Down"></td>
<tr></tr>
<td><button action="{delete}" value="Удалить" width=75 height=15 fore="L2UI_CT1.ListCTRL_DF_Title" back="l2ui_ct1.ListCTRL_DF_Title_Down"></td>
</tr></table>
</td><td>&nbsp;
Если Вы задаётесь вопросом почему у меня в конце открываеться тэг td и после него ещё стоит пробел , это сделано для того что , клиент l2 критует при условии если между <td> и </td> будет пустота. А так же учитываем тот факт что при создании новой схемы , темплейт %scheme% дублируется от сюда и такой странный код.

[p.s] "null" уходит при условии что в index перед переменной %scheme% ставить тег <table> а сам темплейт %scheme% будет начинаться с <tr>.

Как избавится от этого "null" ?
 
Вы безусловно правы , но картины это не изменило не капельки , от "null" я не избавился , да и на структуру вида это никак не повлияло. Но всё равно спасибо.
Есть ещё у кого варианты ?
 
WTF ? , вы точно читали , чего я хочу сделать ?)

Код:
            String template = getCache().getHtml(Config.BBS_PATH + "/buffer/sheme.htm", player);
            String block = "";
            String list = null;
            for(String name : player.getCommunityComponent().getSchemes().keySet())
            {
                block = template;
                block = block.replace("{bypass}", "bypass _bbsbufferuse " + name + " $Who");
                block = block.replace("{name}", name);
                block = block.replace("{delete}", "bypass _bbsbufferdelete " + name);
                list += block;
            }
Видите как оно работает ? , мне всего лишь нужно добавить блок к %scheme% что бы он не отправлял стринг null , но как это сделать если темплейт будет дублироваться или удалятся. Как мне поставить блок к темплейту myscheme таким образом , что бы он не выдавал "null" и при дублировании или удалении не крашил клиент ?
 
Последнее редактирование:
Хотелось бы видеть пример решения именно через html а не через скрипт. Тот html код который в посте №1 работает верно , единственное осталось придумать как избавиться от нула.
 
String list = null;
заменить на
String list = "";
 
String list = null;
заменить на
String list = "";
Можно без условно , но мне приоритетней решение на стороне самого htm темплейта. Просто скажите что нужно добавить что бы он не высвечивал этот нулл ?
 
Код:
            String template = getCache().getHtml(Config.BBS_PATH + "/buffer/sheme.htm", player);
            String block = "";
            String list = "";
            for(String name : player.getCommunityComponent().getSchemes().keySet())
            {
                block = template;
                block = block.replace("{bypass}", "bypass _bbsbufferuse " + name + " $Who");
                block = block.replace("{name}", name);
                block = block.replace("{delete}", "bypass _bbsbufferdelete " + name);
                list += block;
            }
 
не выйдет у тебя через htm сделать. По коду видно что там идет null + строка
 
Код:
        String s = null;
        s = s + "hello";
        System.out.println(s); // prints "nullhello"

Поэтому заменяем
Код:
String list = null;
на
Код:
String list = "";

И по хорошему для конкатенации строк использовать StringBuilder

Код:
StringBuilder list = new StringBuilder();
            for(String name : player.getCommunityComponent().getSchemes().keySet())
            {
                block = template;
                block = block.replace("{bypass}", "bypass _bbsbufferuse " + name + " $Who");
                block = block.replace("{name}", name);
                block = block.replace("{delete}", "bypass _bbsbufferdelete " + name);
                list.append(block);
            }

Для получения выходной строки после этого цикла используем:
Код:
String result = list.toString();
 
не выйдет у тебя через htm сделать. По коду видно что там идет null + строка
Смотрите сейчас я Вам покажу дефолт темплейты scheme и Вы увидите что null уберается при помощи доп тега <table> при условии того что сам темплейт будет начинатся с тега <tr>.
Index buffer'a
Код:
                                                            <table>
                                                                %scheme%
                                                            </table>
Темплейт %scheme%
Код:
<tr>
    <td align=center valign=top>
        <button action="{bypass}" value="{name}" width=150 height=25 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
    </td>
    <td align=center valign=top><table><tr><td></td></tr></table>
        <button action="{delete}" width=15 height=15 back="L2UI_CT1.Button_DF_Delete_Down" fore="L2UI_CT1.Button_DF_Delete">
    </td>
</tr>
Вот в этом случаи нулл убирается. Но меня этот вариант не устраивает.