2

次のように、パラメーターをメソッド admin に渡そうとします。

<p:toolbarGroup align="right" rendered="#{loginBean.admin('dataread'}">
                            <h:form>
                                <p:commandButton value="manage users" ajax="false"
                                                 icon="ui-icon-document" action="/admin/manageUsers.xhtml?faces-redirect=true"/>
                            </h:form>
                        </p:toolbarGroup>

私のマネージドBeanのコードはそのようなものです

public boolean isAdmin(String role){
          FacesContext facesContext = FacesContext.getCurrentInstance();
          HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
          return request.isUserInRole("admin");                
          }
4

2 に答える 2

5
rendered="#{loginBean.admin('dataread'}"

EL構文エラーが欠落しているため、値がEL式として認識されず、属性内でデフォルトでブール値に)なるプレーンなバニラ文字列として扱われます。また、のような値式の代わりにのようなアクション式を指定する場合は、の代わりに完全なメソッド名を指定する必要があります。renderedtrue#{bean.method()}#{bean.property}isAdmin()admin()

結局のところ、これは次のことを行う必要があります。

rendered="#{loginBean.isAdmin('dataread')}"

具体的な問題とは関係なく、HttpServletRequestはすでにELスコープで利用可能である#{request}ため、これもバッキングBeanボイラープレートを必要とせずに実行できるはずです。

rendered="#{request.isUserInRole('admin')}"
于 2012-05-23T21:30:15.290 に答える
1

正しい構文

rendered="#{loginBean.isAdmin('dataread')}">

それ以外の

rendered="#{loginBean.admin('dataread'}"

ELがそのような機能をサポートしていることを確認してください

 <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>el-impl</artifactId>
      <version>2.2</version>
 </dependency>

JSFでのパラメーターの受け渡しに関するチュートリアルを含む詳細情報を探してください。

于 2012-05-23T21:30:45.873 に答える