Если вы хотите иметь ваши файлы в файлах под group_vars, просто переместите их здесь. Vars может быть в инвентаре (раздел [ group : vars]), но также (и прежде всего) в файлах под group_vars
или hosts_vars
.
Например, с помощью пример выше, вы можете переместить ваши vars для группы tests
в файле group_vars/tests
:
Файл инвентаря:
[lb]
10.112.84.122
[tomcat]
10.112.84.124
[jboss5]
10.112.84.122
...
[tests:children]
lb
tomcat
jboss5
[default:children]
tests
group_vars/tests
файл:
data_base_user=NETWIN-4.3
data_base_password=NETWIN
data_base_encrypted_password=
data_base_host=10.112.69.48
data_base_port=1521
data_base_service=ssdenwdb
data_base_url=jdbc:oracle:thin:@10.112.69.48:1521/ssdenwdb
Вызвано: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: не знаю, как перебирать поставленные «элементы» в
blockquote><forEach>
Это произойдет, когда
<c:forEach items>
не ссылается на действительный объект, по которому он может итерации. Объект должен бытьObject[]
(простой массив),Collection
,Map
,Iterator
,Enumeration
илиString
(см. также исходный код ). Все, что еще нельзя повторить с помощью<c:forEach>
. ВашDetResults
класс не является экземпляром любого из вышеупомянутых типов, поэтому он не сработает.Ваш класс
DetResults
выглядит неправильно. Он выглядит в основном как один бог-боб со совокупностью всех свойств нескольких отдельных объектов. Это неправильно. Класс bean должен представлять не более одного объекта. Перепишите свой классDetResults
, чтобы в итоге вы получили полноценную коллекцию javabeans:List<DetResult> results = detDAO.fetchDetResults(paramBean);
, чтобы вы могли получить к ней доступ следующим образом:
<c:forEach items="${results}" var="result"> ${result.heading} <c:forEach items="${result.data}" var="dataItem"> ${dataItem} </c:forEach> </c:forEach>
вы действительно настаиваете на том, чтобы сохранить свой
DetResults
bean-компонент по своему усмотрению, вы можете получить к нему доступ следующим образом:<c:forEach begin="0" end="${results.columnCount}" varStatus="loop"> ${results.headings[loop.index]} <c:forEach items="${results.data[loop.index]}" var="dataItem"> ${dataItem} </c:forEach> </c:forEach>
См. также:
- Места, где JavaBeans
- Показать JDBC ResultSet в HTML на странице JSP с использованием шаблона MVC и DAO
Не имеет отношения к конкретная проблема, атрибут
<c:forEach var>
неверен. Вы не должны указывать то же имя, что и существующий объект в области. Это будет только столкновение. Но это вопрос нового вопроса, если вы не можете интерпретировать сообщение об ошибке.
Вы должны иметь возможность перебирать заголовки
<tr>
<c:foreach var="heading" items="${results.headings}">
<th>${heading}</th>
</c:foreach>
</tr>
И затем по данным ...
<c:foreach var="row" items="${results.data}">
<tr>
<c:foreach var="i" items="${row}">
<td>${i}</td>
</c:foreach>
</tr>
</c:foreach>
Или что-то в этих строках?