2

ログインしているユーザーのタイプに対して別のメッセージを表示しようとしていますが、解析例外が発生しています

<ui:define name="header">
        <ui:param name="userParam" value="#{bean.user.firstName} - #{bean.user.lastName}" />    
        <p:panel id="headerPanel"
            header="#{bean.adminUser ? 'Welcome Power User' userParam : bean.normalUser ? 'Welcome User' userParam :'Welcome to sytem'}"/>
    </ui:define>

これは例外です

Caused by: org.apache.el.parser.ParseException: Encountered "?" at line 1, column 21.
Was expecting one of:
    "}" ...
    "." ...
    "[" ...
    ">" ...
    "gt" ...
    "<" ...
    "lt" ...
    ">=" ...
    "ge" ...
    "<=" ...
    "le" ...
    "==" ...
    "eq" ...
    "!=" ...
    "ne" ...
    "&&" ...
    "and" ...
    "||" ...
    "or" ...
    "*" ...
    "+" ...
    "-" ...
    "/" ...
    "div" ...
    "%" ...
    "mod" ...
4

2 に答える 2

2

あなたのコードから:

#{bean.adminUser ? 'Welcome Power User' userParam : bean.normalUser ? 'Welcome User' userParam :'Welcome to sytem'}

このように EL で文字列を連結することはできません。

EL 2.2 を使用している場合は、文字列のconcat()メソッドを使用できます。

#{bean.adminUser ? 'Welcome Power User '.concat(userParam) : bean.normalUser ? 'Welcome User '.concat(userParam) : 'Welcome to sytem'}

または、まだ EL 2.1 を使用している場合は、事前に完全な文字列を別のもの<ui:param>(または<c:set>)で準備する必要があります。

<ui:param name="welcomePowerUser" value="Welcome Power User #{userParam}" />
<ui:param name="welcomeUser" value="Welcome User #{userParam}" />
...
#{bean.adminUser ? welcomePowerUser : bean.normalUser ? welcomeUser : 'Welcome to sytem'}
于 2012-11-08T02:36:48.473 に答える
1

次の 2 つの式を使用します。

#{bean.adminUser ? 'Welcome Power User' : 'Welcome User'}#{userParam}
于 2012-11-08T00:57:32.757 に答える