0

我必须通过 javascript 调用远程命令。远程命令工作正常,但它调用页面加载而不是按钮的 onclick 事件。

以下是我的 xhtml 文件代码以及 bean 代码。

<?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:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:h="http://java.sun.com/jsf/html">

<h:head>
    <title>Crowd Flow</title>
</h:head>

<f:event listener="#{task.loadTaskByTaskId(param['task_id'])}"
    type="preRenderView" />

<h:body bgcolor="white">

    <h:outputScript>
        function getCurrentLocation() {
            testingCommand();           
        }
    </h:outputScript>

    <h:panelGroup id="header" layout="block">
        <h3>Welcome to the task.</h3>
    </h:panelGroup>


    <h:panelGroup id="taskLayout" layout="block">
        <h:outputText value="Category is #{task.taskCategory}"></h:outputText>
        <h:outputText value="Task id is is #{task.id}"></h:outputText>

        <c:if test="#{param['task_id']=='9'}">
            <h:form style="width:400px;" id="newTagTaskForm">

                <p:remoteCommand name="testingCommand"
                        actionListener="#{task.testingCommand()}" autoRun="false" />

                Task Name : <h:outputText id="taskName"
                    value="#{task.newPlaceTagTask.name}"></h:outputText>
                <br />
                Task Description : <h:outputText id="taskDescription"
                    value="#{task.newPlaceTagTask.description}"></h:outputText>
                <br />
                Address : <h:outputText id="taskAddress"
                    value="#{task.newPlaceTagTask.location.address}"></h:outputText>
                <br />
                Image : <h:graphicImage width="50" height="50"
                    url="#{task.newPlaceTagTask.location.image}" />
                <br />
                <h:inputHidden value="#{task.userId}" id="taskPlaceTagUserId"
                    name="taskPlaceTagUserId" />

                <h:inputHidden value="#{task.newPlaceTagTask.location.id}"
                    id="taskPlaceTagLocationId" name="taskPlaceTagLocationId" />

                <h:commandButton id="testing" value="submit" type="submit" onclick="getCurrentLocation();return false;" ></h:commandButton>
            </h:form>
        </c:if>
    </h:panelGroup>
</h:body>
</html>

这是bean函数,bean是视图范围的。

package com.project.crowdsource.beans;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean(name="task")
@ViewScoped

public class TaskBean implements Serializable {
    public TaskBean() {
        //initiating user's data access object.
        taskDao = new TaskDAO();
    }

    public String testingCommand() {
        System.out.println("in action testing command");

        return "";
    }   
}

任何帮助将不胜感激。

谢谢,

4

0 回答 0