2016-05-18 3 views
0

У меня есть dataView с элементами элементов предметов в порядке. Я позволил пользователю перемещать их вверх или вниз, нажимая на стрелках (см):Xpages: обратный вызов в SSJS-вызове java?

enter image description here

Когда стрелка щелкнула я называю метод Java с соответствующим Params, который изменяет значения в документах - перемещение один вверх и один вниз и установка значений стрелок.

Действие по стрелкам вызывает полное обновление, и я могу сказать, что основные документы являются правильными, но страница не обновляется, или позвольте мне сказать, что я считаю, что это обновляется, но перед тем делается Java-. Потому что я не вижу изменений в представлении после нажатия ошибки. Я вижу их, если обновить представление из пользовательского интерфейса после нажатия стрелки.

Есть ли простой способ не обновлять данные до тех пор, пока данные не будут обновлены. Очень хотелось бы сделать частичное обновление только на представлении данных.

При необходимости я могу добавить код.

Спасибо.

<xp:panel xp:key="icon" style="width:35px"> 
          <xp:div id="div1" 
           style="display: inline-block;width:50%"> 
           <xp:this.styleClass> 
            <![CDATA[#{javascript:if (entry.getColumnValue("arrowUp") == "Y") 
{return "glyphicon glyphicon-arrow-down pull-left"} 
else 
{return "/moveBlank.gif"}}]]> 
           </xp:this.styleClass> 
           <xp:eventHandler event="onclick" 
            submit="true" refreshMode="complete"> 
            <xp:this.action><![CDATA[#{javascript:var mveDir:String = "H"; 
var pckOrd:String = entry.getColumnValue("order"); 
var type:String = "Inventory"; 
jc = new com.scoular.model.TaskInventory(); 
jc.moveTasks(pckOrd,mveDir,type)}]]></xp:this.action> 
           </xp:eventHandler> 
          </xp:div> 
          <xp:div id="div2" 
           style="display:inline-block;width:50%"> 
           <xp:this.styleClass> 
            <![CDATA[#{javascript:if (entry.getColumnValue("arrowDown") == "Y") 
{return "glyphicon glyphicon-arrow-up pull-left"} 
else 
{return "/moveBlank.gif"}}]]> 
           </xp:this.styleClass> 
           <xp:eventHandler event="onclick" 
            submit="true" refreshMode="complete"> 
            <xp:this.action><![CDATA[#{javascript:var mveDir:String = "L"; 
var pckOrd:String = entry.getColumnValue("order"); 
var type:String = "Inventory"; 
jc = new com.scoular.model.TaskInventory(); 
jc.moveTasks(pckOrd,mveDir,type);}]]></xp:this.action> 
           </xp:eventHandler> 
          </xp:div> 
      </xp:panel> 
+1

Почему вы все время создаете новую модель TaskInventory во время щелчка? Нам нужно будет увидеть Java-код, чтобы помочь. – pipalia

ответ

1

Иногда вам необходимо выполнить обновление в событии onComplete событияHandler. Предполагая, что вы не кодируете это с нуля, единственный способ увидеть onComplete, onError и т. Д. - найти его в контуре.

Вот небольшой пример, который может помочь, если это действительно проблема.

<xp:button value="Cancel" id="button4"> 
    <xp:eventHandler 
     event="onclick" submit="true" refreshMode="partial" 
     onComplete="XSP.partialRefreshPost('#{id:mainContent}', {})" refreshId="mainPanel"> 
      <xp:this.action><![CDATA[#{javascript:viewScope.remove("editRow")}]]></xp:this.action> 
    </xp:eventHandler> 
</xp:button> 
Смежные вопросы