Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ZK通过javascript设置服务器值_Java_Javascript_Client Server_Return Value - Fatal编程技术网

ZK通过javascript设置服务器值

ZK通过javascript设置服务器值,java,javascript,client-server,return-value,Java,Javascript,Client Server,Return Value,我用canvas/javascript绘制了一个dartbard,并计算出哪个值字段被javascript命中 问题出在这里: 我可以从客户端更新文本框/标签中的值,但我无法让服务器注册有更改/意识到值已更改 我很确定这是一个简单的问题,但如果你能帮助我,那就太好了 这就是我被困在细节中的一点: 1)我点击画布,一个字段被点击。已设置命中字段值 =>这不应该触发hitText的Set方法吗 <label id="hiddenValue" value="@bind(vm.hitTex

我用canvas/javascript绘制了一个dartbard,并计算出哪个值字段被javascript命中

问题出在这里:

我可以从客户端更新文本框/标签中的值,但我无法让服务器注册有更改/意识到值已更改

我很确定这是一个简单的问题,但如果你能帮助我,那就太好了

这就是我被困在细节中的一点:

1)我点击画布,一个字段被点击。已设置命中字段值

=>这不应该触发hitText的Set方法吗

    <label id="hiddenValue" value="@bind(vm.hitText)" visible="true" />
    <canvas id="canvas" onclick="calc()"></canvas>
    <script type="text/JavaScript">
        <![CDATA[ 
        function calc() {
        var valuey= calcResult();zk.Widget.$(jq('$hiddenValue')[0]).setValue(valuey); 
                        };
        ]]>
    </script>
---------------------------- 完整的Zul文件:

<zk>

    <window title="The Dart Scorer" border="normal"
        apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('de.itsmeagain.controller.dartViewModel')"
        xmlns:w="http://www.zkoss.org/2005/zk/client">

        <tabbox id="tabbox">
            <tabs>
                <tab label="New Game" />
                <tab label="Players" />
                <tab label="Lets Dart!" selected="true" />
                <tab label="Player Statistics" />

            </tabs>
            <tabpanels>
                <tabpanel>
                    <vbox>
                        <hbox>
                            <label id="l_gametype" value="Select Game Type:" />
                            <combobox id="gametype" width="150px">
                                <attribute name="onCreate">
                            <![CDATA[
    List list2 = new ArrayList();
    list2.add("501");
    list2.add("301");
    list2.add("Cricket");
    list2.add("Halve It");
    ListModelList lm2 = new ListModelList(list2);
    lm2.addSelection(lm2.get(0));
    gametype.setModel(lm2);
]]></attribute>
                            </combobox>
                        </hbox>
                        <button id="b_players" label="Select Players"
                            onclick="@command('SwitchTab',Index=1)" />

                        <button id="b_newGame" label="Start New Game" />
                    </vbox>
                </tabpanel>

                <tabpanel>
                    <vbox>
                        <listbox id="playerlist" model="@load(vm.players)"
                            selectedItem="@laod(vm.singleplayer)" width="100%" emptyMessage="Nothing Here!">

                            <listhead>
                                <listheader label="Player ID" sort="auto" width="20%" />
                                <listheader label="Player Name" sort="auto" width="50%" />
                                <listheader label="Use Player" sort="auto" width="10%" />
                                <listheader label="Delete Player" sort="auto" width="20%" />
                            </listhead>
                            <template name="model">
                                <listitem>
                                    <listcell label="@load(each.playerID)" />
                                    <listcell label="@load(each.playerName)" />
                                    <listcell>
                                        <checkbox checked="@load(each.active)" />
                                    </listcell>
                                    <listcell>
                                        <button label="delete Player" />
                                    </listcell>
                                </listitem>
                            </template>
                        </listbox>
                        <hlayout>
                            <button id="addPlayer" label="add new player" width="100%" />

                            <button id="startGame" label="StartGame" width="100%" />


                        </hlayout>

                    </vbox>
                </tabpanel>
                <tabpanel>
                    <vlayout>

                        <label id="hiddenValue" value="@bind(vm.hitText)" visible="true" />
                        <html xmlns:w="client"
                            onClick="@command('processHiData', hit=hiddenValue.getValue())">

                            <title>Dart</title>
                            <style>
                                canvas { background-color: white;
                                border-style: solid; }
                            </style>
                            <canvas id="canvas" onclick="calc()"></canvas>

                            <body onload="draw();">
                            </body>

                            <script type="text/JavaScript">

    <![CDATA[ 
      function calc() {
      var valuey= calcResult();
      zk.Widget.$(jq('$hiddenValue')[0]).setValue(valuey);   

      };
    ]]>
                            </script>





                            <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js">
                            </script>
                            <script type="text/javascript" src="GlobalVariables.js">
                            </script>
                            <script type="text/javascript" src="calculate.js">
                            </script>
                            <script type="text/javascript" src="drawObjects.js">
                            </script>



                        </html>
                    </vlayout>
                </tabpanel>
            </tabpanels>

        </tabbox>
    </window>
</zk>

飞奔
画布{背景色:白色;
边框样式:实心;}
---------------------- 完整的Java类:

package de.itsmeagain.controller;

import java.util.List;    
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
import de.itsmeagain.db.DartField;
import de.itsmeagain.db.player;
import de.itsmeagain.interfaces.DataBaseService;
import de.itsmeagain.interfaces.DataBaseServiceImpl;


public class dartViewModel  extends GenericForwardComposer {



    public dartViewModel(){

        getInitialDBData();

    }

    private DataBaseService dbService = new DataBaseServiceImpl();
    private List<DartField>dartFields;
    private DartField dartfield = new DartField();
    private player singleplayer;
    private List<player> players;
    private player activeplayer;
    private List<player> activePlayers;
    private String hitText="HitField";


    protected Label hiddenValue;
    protected Textbox textbox;


    public player getSingleplayer() {
        return singleplayer;
    }
    public void setSingleplayer(player singleplayer) {
        this.singleplayer = singleplayer;
    }

    public List<player> getPlayers() {
        return players;
    }

    public player getActivePlayer() {
        return activeplayer;
    }
    public void setActivePlayer(player activePlayer) {
        this.activeplayer = activePlayer;
    }

    public List<player> getActivePlayers() {
        return activePlayers;
    }
    public player getActiveplayer() {
        return activeplayer;
    }
    public void setActiveplayer(player activeplayer) {
        this.activeplayer = activeplayer;
    }
    public DartField getDartfield() {
        return dartfield;
    }
    public void setDartfield(DartField dartfield) {
        this.dartfield = dartfield;
    }
    public List<DartField> getDartFields() {
        return dartFields;
    }
    private void getInitialDBData(){
        dartFields=dbService.getDartFields();
        players=dbService.getAllPlayer();
        activePlayers=dbService.activePlayer();
    }


      @Command @NotifyChange("hitString")
        public void processHiData(@BindingParam("hit") String hit){
          System.out.println("you hit " + hit);
        }
    public String getHitText() {
        return hitText;
    }
    public void setHitText(String hitText) {
        this.hitText = hitText;
    }
    }
package de.itsmeagain.controller;
导入java.util.List;
导入org.zkoss.bind.annotation.BindingParam;
导入org.zkoss.bind.annotation.Command;
导入org.zkoss.bind.annotation.NotifyChange;
导入org.zkoss.zk.ui.util.GenericForwardComposer;
导入org.zkoss.zul.Label;
导入org.zkoss.zul.Textbox;
导入de.itsmeagain.db.DartField;
导入de.itsmeagain.db.player;
导入de.itsmeagain.interfaces.DataBaseService;
导入de.itsmeagain.interfaces.DataBaseServiceImpl;
公共类dartViewModel扩展了GenericForwardComposer{
公共视图模型(){
getInitialDBData();
}
private DataBaseService dbService=new databaseserviceinpl();
私人领域;
private-DartField-DartField=new-DartField();
私人球员单打球员;
私人名单玩家;
私人玩家;
私人球员名单;
私有字符串hitText=“HitField”;
保护标签隐藏值;
受保护的文本框文本框;
公共播放器getSingleplayer(){
返回单打;
}
公共无效设置单玩家(玩家单玩家){
this.singleplayer=singleplayer;
}
公共列表getPlayers(){
返回球员;
}
公共播放器getActivePlayer(){
返回活动玩家;
}
public void setActivePlayer(player-activePlayer){
this.activeplayer=activeplayer;
}
公共列表getActivePlayer(){
返回活跃玩家;
}
公共播放器getActiveplayer(){
返回活动玩家;
}
public void setActiveplayer(player-activeplayer){
this.activeplayer=activeplayer;
}
公共DartField getDartfield(){
返回达特菲尔德;
}
公共无效设置达特菲尔德(达特菲尔德达特菲尔德){
this.dartfield=dartfield;
}
公共列表getDartFields(){
返回达特菲尔德;
}
私有void getInitialDBData(){
dartFields=dbService.getDartFields();
players=dbService.getAllPlayer();
activePlayers=dbService.activePlayer();
}
@命令@NotifyChange(“hitString”)
public void processHiData(@BindingParam(“hit”)字符串命中){
System.out.println(“你命中”+命中);
}
公共字符串getHitText(){
返回文本;
}
公共void setHitText(字符串hitText){
this.hitText=hitText;
}
}

这个问题通过一个简单的post请求得到了解决

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
               dartfield.setFieldName(request.getParameter("field"));
               dartfield.setFieldModifier(Integer.parseInt((request.getParameter("modi"))));
               dartfield.setFieldvalue(Integer.parseInt((request.getParameter("value"))));
              System.out.println(request.getParameter("value") + " "+ request.getParameter("field")+ "  "+ request.getParameter("modi"));


}

JavaScript方法:

   $.post('/TheDartScorer/dartViewModel',
             {field : name, value: result, modi : mod}         
           ); 

问题通过一个简单的post请求得到解决。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
               dartfield.setFieldName(request.getParameter("field"));
               dartfield.setFieldModifier(Integer.parseInt((request.getParameter("modi"))));
               dartfield.setFieldvalue(Integer.parseInt((request.getParameter("value"))));
              System.out.println(request.getParameter("value") + " "+ request.getParameter("field")+ "  "+ request.getParameter("modi"));


}
   $.post('/TheDartScorer/dartViewModel',
             {field : name, value: result, modi : mod}         
           );