2013-05-10 2 views
1

У меня проблема, и я действительно не знаю, почему это происходит, я довольно новичок в OGNL ... Итак, у меня есть макет, который определил плитку, другая плитка расширяет этот макет и помещает ключ, который используется, чтобы показать значение на БДЕ этого ключа, скажем, называются keyName, я хочу вынести это значение, используя OGNL так:Вложенное выражение OGNL не отображается

<s:label value="%{getText('%{keyName}')}"/> 

, но показывающее putted value keyName не значение DB ..., если я пробовал hardcoding keyValue и работает нормально, например:

<s:label value="%{getText('strWelcome')}"/> 

Это правильно отображает значение ключа strWelcome в БД ... Любые советы, как это исправить?

ПРИМЕЧАНИЕ. Я попытался использовать keyName, как переменную JSTL, но сообщает мне, что не могу передавать динамические значения до getText().

ответ

2

OGNL не работает таким образом, он либо является или не выражение OGNL, вы не говорите «это выражение OGNL», а затем внутри выражения говорят: «О, это выражение OGNL », вам нужно только сделать это один раз.

Конечным результатом является то это, вероятно, правильные выражения:

<s:label value="%{getText(keyName)}"/> 

будучи атрибутом значения я подозреваю, OGNL предполагается, так что это должно работать

<s:label value="getText(keyName)"/> 

Это предполагает, что переменная «KEYNAME» находится в области действия, если он должен быть в другом объеме, вам может потребоваться добавить «#», или вы можете быть более конкретным, подробности о доступе к различным областям см. в: http://struts.apache.org/release/2.2.x/docs/ognl.html