У меня проблема с моей страницей JSF, которая использует компоненты PrimeFaces. Поскольку это может быстро стать длинным и скучным, я постараюсь быть максимально кратким. Рассмотрим этот управляемый компонент:
@Named(value = "testBean")
@RequestScoped
public class TestBean implements Serializable {
private String test;
public String update() {
test = "Updated.";
return "test";
}
// Getters and Setters...
}
Вот основная часть test.xhtml
с удаленным ненужным содержанием и стилями:
<h:body>
<p:layout id="layout" fullPage="true">
<p:layoutUnit position="north">
<!-- Does not matter -->
</p:layoutUnit>
<p:layoutUnit id="input" position="west">
<p:panel header="">
<p:tabView>
<p:tab title="">
<!-- INPUTS and SUBMIT BUTTON -->
</p:tab>
</p:tabView>
</p:panel>
</p:layoutUnit>
<p:layoutUnit id="output" position="center">
<h:form>
<p:panel id="display" header="Information">
<h:outputText value="#{testBean.test}" />
</p:panel>
<p:separator />
<p:commandButton value="Update !" action="#{testBean.update()}" ajax="false" />
</h:form>
</p:layoutUnit>
<p:layoutUnit position="south">
<!-- Does not matter -->
</p:layoutUnit>
</p:layout>
</h:body>
И все работает нормально. У меня есть две проблемы, хотя:
Я должен переместить
commandButton
в другойlayoutUnit
(вход), и я не могу поместить элемент<h:form>
в разумное положение. Я попытался переместить его рядом с<p:layout>
, чтобы он заключал в себе все единицы макета, но он сломался (на обновленной странице больше нет строки «Обновлено».).Я хочу выполнить обновление через ajax с помощью кнопки на другом layoutUnit. Когда я удаляю атрибут
ajax="false"
изcommandButton
и устанавливаю атрибутprependId="false"
для элемента глобальной формы, выходной текст не обновляется.
Заранее спасибо за помощь