0
我一直在研究如何開發JSF自定義組件來提高我對它的工作原理的知識(到目前爲止它已經非常有趣)。如何解碼commandButton動作
我做了我自己的commandButton(從HtmlCommandButton擴展而來),它在組件類中進行所有解碼和導入時按預期工作。
當我決定爲我的組件創建一個單獨的面呈現器時,它停止工作。經過一番研究後,我得知我必須重寫渲染器的解碼方法,並且之前正在工作,因爲此方法已由HtmlCommandButton實現。
經過一番研究,我發現瞭如何解碼動作監聽器(thanks to BalusC),並且我還學習瞭如何解碼ajax事件。但是我仍然不知道如何解碼操作。
這是現在我的解碼方法:
@Override
public void decode(FacesContext context, UIComponent component) {
CommandButtonUI commandButton = (CommandButtonUI) component;
//decode click ajax events
List<ClientBehavior> clientBehaviours = commandButton.getClientBehaviors().get("click");
if (clientBehaviours != null) {
for (ClientBehavior cb : clientBehaviours) {
cb.decode(context, component);
}
}
//decode action listenet
if (context.getExternalContext().getRequestParameterMap().containsKey(commandButton.getClientId(context))) {
component.queueEvent(new ActionEvent(component));
}
}
我已經試圖找到HtmlCommandButton的源解碼和分析,但我沒能找到它,因爲顯然它是由一個插件生成。
我還是老樣子試圖瞭解它(似乎它只是遵循一步一步發生了什麼的解碼行爲的RenderKit文件規定),但它爲我工作。謝謝。 ^^ –