모델을로드하는 동안 오류가 발생하면 사용자에게이를 표시하는 올바른 방법은 무엇입니까? 이 페이지에 피드백 구성 요소를 추가하고이 작업을 수행하는 올바른 방법입니다) (오류를 사용하는 것 같아,하지만 난 그렇게 할 때이 오류가 얻을 :LoadableDetachableModel에서 오류보고가 작동하지 않습니다.
: 여기Caused by: org.apache.wicket.WicketRuntimeException: Cannot modify component hierarchy after render phase has started (page version cant change then anymore)
at org.apache.wicket.Component.checkHierarchyChange(Component.java:3572)
at org.apache.wicket.Component.addStateChange(Component.java:3501)
at org.apache.wicket.Component.error(Component.java:1254)
at com.prosc.wicket.LoadableDetachableModelErrorTest$1.load(LoadableDetachableModelErrorTest.java:21)
at com.prosc.wicket.LoadableDetachableModelErrorTest$1.load(LoadableDetachableModelErrorTest.java:17)
at org.apache.wicket.model.LoadableDetachableModel.getObject(LoadableDetachableModel.java:121)
at org.apache.wicket.Component.getDefaultModelObject(Component.java:1605)
내 자바 코드를
이
<html>
<body>
<div wicket:id="feedback" />
<div wicket:id="dynamicText" />
</body>
</html>
예상되는 결과가 사용자에게 표시되는 오류 메시지와 함께 빈 페이지를 볼 수 있습니다 :
package com.prosc.wicket;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.LoadableDetachableModel;
public class LoadableDetachableModelErrorTest extends WebPage {
public LoadableDetachableModelErrorTest() {
add(new FeedbackPanel("feedback"));
add(new Label("dynamicText", new LoadableDetachableModel<String>() {
@Override
protected String load() {
String result = "Hello World";
error("Uh oh, some imaginary problem happened");
return result;
}
}));
}
}
여기 내 HTML 마크 업입니다.
세션 # error()는 방법입니다. Wicket 1.4 (또는 그 이상) 코드 예제를 사용하지 않았다면 답을 +1합니다. 이것이 Wicket 6.x이므로 IRequestCycleListener # onException()을 사용하십시오. –
error()에서 Session.get(). error()로 변경하면 실제로 "구성 요소 계층 구조를 수정할 수 없습니다."예외가 발생하지 않지만 내 FeedbackPanel에는 표시되지 않습니다. 모델을로드하지 못한 페이지에 세션 오류 메시지를 표시하려면 어떻게합니까? –
세션, get.error()가 내 피드백 구성 요소에 표시되지 않는 이유에 대한 아이디어가 있습니까? –