2015-06-08 6 views
2

Я создал столбец таблицы, который определен в его собственном файле include. Эта колонка используется <ui:include> на нескольких других страницах Facelets, которые будут использоваться в некоторых типах данных. В столбце include используется переменная, называемая «linje» (которая является классом java), которая определена на родительской странице, содержащей столбец.IntelliJ предупреждает «Невозможно разрешить переменную» на переменных EL, объявленных на родительской странице include

Несмотря на то, что код работает, я не могу перейти к java-классу из включенного файла в IntelliJ. Есть ли способ сделать это? Я также получаю много предупреждений от IntellJ «Не удается разрешить переменную "linje".

код, который использует столбец

<rich:dataTable value="#{someMBean.someLinjeModel}" 
         reRender="ds-h" var="linje" id="vt" 
         rows="#{someBean.rows}" styleClass="standard" 
         rowClasses="odd,even"> 

      <ui:include src="someColumn.xhtml"></ui:include> 

код из someColumn.xhtml

<rich:column id="status" rendered="#{!linje.someRenderingCheck}"> 
     <f:facet name="header"> 
      <h:outputText value="Status"/> 
     </f:facet> 
     <h:outputText value="#{linje.someText}"/> 
</rich:column> 

ответ

2

Вы может передавать переменную linje в качестве параметра для <ui:unclude>.

Например:

<ui:include src="someColumn.xhtml"> 
    <ui:param name="linje" value="#{linje}" /> 
</ui:include> 

Это будет параметр запроса для someColumn.xhtml и вы можете скопировать его на другой (используя <c:set> тег), для того, чтобы избежать IDE предупреждений:

<c:set var="linje" value="#{linje}" /> 
+2

Если вы используете трюк 'c: set', тогда IDE больше не жалуется, что он не знает, что такое' linje', но если вы затем попытаетесь использовать свойства 'linje', например, в выражении как '# {linje.someText}', он будет жаловаться, что 'linje' не имеет свойства' someText' (потому что он не знает, что тип 'linje' имеет). – Jesper