У меня есть эта проблема относительно обновления некоторых элементов на моей странице zul. В настоящее время я использую MVC с ZK, а не MVVM. Я уже использовал elementId.invalidate(), но, похоже, этот метод не работал. Может кто-то, пожалуйста, помогите мне, как это сделать в MVC ZK?Метод invalidate() не обновляет веб-элемент в MVC ZK
Вот моя страница зул
<?xml version="1.0" encoding="UTF-8"?>
<zk xmlns="http://www.zkoss.org/2005/zul">
<window border="none" apply="com.dorne.got.ui.far.there.FooComposer">
<groupbox mold="3d" closable="false">
<caption
label="${labels.generate.foo.forward}" />
<grid fixedLayout="true">
<columns>
<column width="20%" />
<column width="80%" />
</columns>
<rows>
...
...
<row>
<div>
<label
value="${labels.foo.fr.Name}" />
</div>
<div>
<!-- constraint="/.+\.+|/: Please enter a valid Name" -->
<textbox id="txtName" width="10%" />
<label id="lblErrorName"
style="color:red" />
</div>
</row>
</rows>
</grid>
<div align="center">
<separator />
<button id="btnSubmit"
label="${labels.common.button.generate}" />
<button id="btnClose"
label="${labels.common.button.cancel}" />
<separator />
</div>
</groupbox>
</window>
И вот мой MVC ZK композитор
public class RefreshLabelNameComposer extends WindowComposer {
@Wire
private Label lblErrorName
@Override
public void doAfterCompose(Window comp) throws Exception {
//skip this code
}
public longProcess() {
//some long proccess
}
@Listen("onClick = #btnSubmit")
public void btnSubmitClick() {
lblErrorName.setValue("");
lblErrorName.invalidate();
longProccess();
}
}
Пусть Предположим, после некоторого proccess, значение lblErrorName не пусто. После того, как я нажму кнопку «Отправить», незадолго до завершения процесса, lblErrorName не обновит свое значение до «». Я хочу, чтобы перед запуском длительной работы lblErrorName обновлялся до пустой строки, поэтому пользователь не видит ошибки при запуске метода longProccess. Я думаю, проблема заключается в том, как метод invalidate() работает с MVC ZK, но я не уверен, в чем проблема. Может кто-нибудь, пожалуйста, помогите, как это исправить? Большое спасибо
Edit: Я использую ZK 7
Edit 2: Я уже пытался
lblErrorName.setVisible(!lblErroName.isVisible());
lblErrorName.setValue("");
lblErrorName.setVisible(!lblErroName.isVisible());
, но до сих пор элемент этикетки lblErrorName обыкновение обновить пустую строку
+1 для связи. Во-первых, это превосходное дополнение к моим знаниям, как упростить длительный процесс в zk. Во-вторых, хотя он не отвечает на мой вопрос напрямую, метод echoEvent упоминается в статье, и я использовал его. Он может принудительно вызвать любое событие, а так как после вызванного события страница автоматически обновляется. Спасибо, btw – Barjack