Пользовательский тег принимает нулевое значение из сервлета и ловит исключение - PullRequest
0 голосов
/ 18 января 2012

я написал пользовательский тег, который облегчает локализацию строк;

в jsp выглядит так:

 <ct:word key="${message}"/>

сообщение передано из сервлета.Этот тег принимает необходимую строку из ResourceBundle.Все работает, но есть проблема.Если я не передал сообщение от сервлета, тогда мое приложение выдает исключение (ResourceBundle не может найти необходимую строку).
Как убедиться, что пользовательский тег не отвечает на ноль и пропускается?как это делает

<c:out />  

код im мой пользовательский тег:

private String key;
private String value;

public void setKey(String key) {
    this.key = key;
}

public String getKey() {
    return this.key;
}

public int doStartTag() {
    try {
        this.checkLocale();//check locale and init resourceBundle
        value = resourceBundle.getString(key);
        pageContext.getOut().write(value);
    } catch (IOException e) {
        logger.error(e);
    } catch (MyException e1) {
        logger.error(e1);
    }
    return SKIP_BODY;
}

Я не хочу использовать

<c:if test="${not empty message}"/> or <c:when/>

это загромождает код на jsp

ОБНОВЛЕНО : я пытаюсь

    } catch (MyException e1) {
        logger.error(e1);
        return SKIP_BODY;
    }

, но у меня есть исключение:

java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key 

в моих методах я ловлю

    catch (MissingResourceException e) {
        throw new MyException(Constants.ERROR_TRANSLATE_TAG,e);
    }

мое приложение выдает это исключение ТОЛЬКО если я не передал это сообщение из сервлета.Я хочу отобразить страницу, даже если у меня нет этого сообщения, без страниц ошибок.

1 Ответ

0 голосов
/ 18 января 2012

Для записи:

resourceBundle.getString(key); выдает MissingResourceException, если ключ не может быть найден, таким образом, перехватить это исключение также в методе doStartTag().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...