После дальнейшего рассмотрения эта проблема не имеет ничего общего с самим полем: код, включенный в вопрос, соответствует желаемому ответу.Скорее проблема в том, что событие определено внутри dijit.Dialog.
Когда Dojo анализирует диалог, он перемещает элементы DOM в конец тела по причинам компоновки.К сожалению, это также перемещает его за пределы формы.Это нарушает любые события на стороне сервера, потому что данные события больше не сериализуются как часть формы.Таким образом, в вашем примере событие завершается неудачей не потому, что код события неправильный, а потому, что само событие никогда не запускается.
Идеальным решением для этого является использование компонента диалога из библиотеки расширений (или 8.5.3 UP1) вместо промежуточного элемента div с указанным типом dojoType.Если это не вариант, есть обходной путь ... добавьте следующий компонент внизу страницы:
<xp:scriptBlock>
<xp:this.value><![CDATA[XSP.addOnLoad(function(){
var dominoForm = XSP.byId("#{javascript:return view.findScriptCollector().getClientId(facesContext);}");
dojo.query("div.dijitDialog").forEach(function(eachDialog){
dojo.place(eachDialog, dominoForm, "last");
});
});]]></xp:this.value>
</xp:scriptBlock>
Это должно привести к тому, что все проанализированные диалоги будут перемещены обратно в форму, разрешив событиявнутри них снова правильно стрелять.