Javascript / Javabean: сотрудничество не работает для счетчика - PullRequest
1 голос
/ 17 ноября 2011

Я должен сделать простое веб-приложение, используя javascript и javabeans. Фактическое назначение немного отличается (включая dropcoordinates и тому подобное), но вот моя проблема с файлом тестирования:

Всякий раз, когда нажимается красный квадрат, он должен добавить 1 к значению в моем javabean и вывести его в текстовое поле. Он показывает это правильно, но затем он каким-то образом возвращается к своему первоначальному значению. Когда я отлаживаю, это даже не входит в мой метод addUp (). Вторая проблема: когда я обновляю страницу, она входит в метод, независимо от того, щелкнул я по квадрату или нет.

Вот мой код:

Сайт index.xhtml

    <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>

        <script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

    </h:head>
    <h:body>

        <form>
        <DIV id="move" style="width:150px;height:150px;background-color:pink;border:1px solid #999999"> &nbsp; </DIV>
        <input id="test" value="${countController.counter}" />
        <SCRIPT type="text/javascript">
            $(document).ready(function(){
            $("#move").click(function(event, ui){

                  alert(${countController.counter});

            });

            $("#droppable").click(function(event, ui){

                  alert(${countController.counter});
                  ${countController.telOp()};
                  document.getElementById("test").value = ${countController.counter};

                  alert(${countController.counter});
                  //window.location.reload();


            });
            });
        </SCRIPT>

        <div id="droppable" style="width:150px;height:150px;background-color:red;border:1px solid #999999">Drop here</div>

        </form>

    </h:body>
</html>

CountController.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author Laurent
 */
@ManagedBean
@SessionScoped
public class CountController implements Serializable{

    /** Creates a new instance of countController */
    public CountController() {
    }

    private int counter = 0;

    public int getCounter() {
        return counter;
    }

    public void setCounter(int counter) {
        this.counter = counter;
    }

    public void telOp(){
        counter++;
    }

}

1 Ответ

0 голосов
/ 17 ноября 2011

Вам необходимо добавить прослушиватель событий в управляемый компонент, такой как

buttonClicked(ActionEvent event){

}

, а затем из пользовательского интерфейса вы реализуете ah: commandLink или h: commandButton для вызова события действия.

...