Struts2 додзе обработчик кнопки переходит в замыкание - PullRequest
0 голосов
/ 27 мая 2011

Использование Struts2 с плитками и додзё, выпущенных за последние 2 года. пытаясь переместить глобальный код для кнопки onclick и проверки формы в замыкание.

------ страница myjsp.jsp -----
function doDialog(){
var myVar = new MyNewDialog(42);
myVar.showDialog();
}
......
< button ... to show dialog.. onclick="doDialog()" ..../>
< tiles:insertTemplate template="myDialog.jsp"

.....

--------myDialog.jsp----
< script type="text/javascript" src="my.js"/>

....

< div dojoType="dijit.form.Button" iconClass="toolbarIcon toolbarIconSave" id="mySaveButtonId" showLabel="true" onclick="mySaveButtonPressed();">


--------my.js file----
// This function works because it is global, I want to move it into the closure.
function mySaveButtonPressed(){
.....
validateDialog();
...
}
function validateDialog(){
.. yes it calls the the struts2 validators... but also does some other things.
}

function MyNewDialog(param){

     this.contstrucDialog = function(){
      ...
     }

     //desired location saving code
     //this.mySaveButtonPressed = function(){
     //.....<
     //validateDialog();
     //...
     //}
     //function validateDialog(){
     //  .....
     // }

    ..... everything but the method for validating and saving the dialog data....
}


Я переместил методы сохранения и проверки в замыкание и попытался добавить соединение с моим целевым методом. mySaveButtonPressed никогда не выполняется. Я думал, что вся цель подключения заключается в том, чтобы соединить событие виджета с вызовом какого-либо метода.
myjsp.jsp

var myVar = new MyNewPopupStuff (42); var mySaveButton = dojo.byId ("mySaveBut \ TonId ");
dojo.connect (mySaveButton, "onclick", myVar.mySaveButtonPressed ());
myVar.contstrucDialog ();

Так как я действительно не хочу помещать много "myVar" в любом месте, я попробовал "this" вместо myVar. не повезло.

ВОПРОС: Как мне переместить этот код в замыкание ????

-------------------------- Была мысль, но не могу проверить ее в данный момент ------

Возможно, dojo.connect должен войти в замыкание, где я создаю содержимое диалога.

ВОПРОС: Какова наилучшая отраслевая практика для обработки этого распространенного делема?

1 Ответ

0 голосов
/ 31 мая 2011

в моем скрипте java, который создал диалог, я поместил JavaScript, который создал мой диалог.

работает

функция MyNewDialog (param) {

 this.contstrucDialog = function(){
  ...
  dojo.connect(saveButton,"onclick",this,mySaveButtonPressed,true );
   ......
 }

, но делаетне похоже на

dojo.connect (saveButton, "onclick", this, mySaveButtonPressed (), true)

Настолько незначительный вопрос, что кто-то может ответить за меня.Когда я ставлю парены, а когда нет?Я вызываю функцию mySaveButtonPressed (), почему бы мне не использовать mySaveButtonPressed ()?

...