2017-02-12 29 views
-1

まず、私は可能かどうかわからないので、質問する前にたくさんの投稿を読んで、JavaScript関数からStruts2アクションを呼び出すにはどうすればいいですか?JavaScript関数からStruts2アクションを呼び出す方法は?

例(フォーム):

http://www.simplecodestuffs.com/example-to-call-struts2-action-from-java-script
how to call method in action class in javascript using struts2 framework?
how to redirect to struts action from java script in struts 2?
How to call a method in Struts2 Action Class method with javascript
https://coderanch.com/t/533202/framework/Calling-Action-Class-javaScript-Struts
https://coderanch.com/t/530746/framework/call-method-action-class-Struts
https://coderanch.com/t/551141/framework/call-Struts-action-javascript-function

助けてくれてありがとう。

は、私はあなたがStruts2のアクションとあなたが見ることができるように私は、Struts2のアクション

Struts.xml

を呼び出す必要がデborrarPerfilを(含まれていjavascriptFunctions.js)を見ることができますStruts.xmlファイルを置きます

<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 
<constant name="struts.devMode" value="true" /> 

<package name="registrar" extends="struts-default"> 
    <action name="registrar" class="registrar.action.Registrar" 
     method="execute"> 
     <result name="success" type="redirect">/estructura/finRegistro.jsp 
     </result> 
     <result name="input" type="dispatcher">/estructura/registro.jsp</result> 
    </action> 
</package> 

<package name="tiles" extends="struts-default"> 
    <result-types> 
     <result-type name="tiles" 
      class="org.apache.struts2.views.tiles.TilesResult" /> 
    </result-types> 
    <action name="*Menu" method="{1}" class="tiles.action.MenuAction"> 
     <result name="inicio" type="tiles">inicio</result> 
     <result name="quienes" type="tiles">quienes</result> 
     <result name="servicios" type="tiles">servicios</result> 
     <result name="donde" type="tiles">donde</result> 
     <result name="contacto" type="tiles">contacto</result> 
    </action> 

    <action name="*Usuario" method="{1}" class="tiles.action.UsuarioAction"> 
     <result name="perfil" type="tiles">perfil</result> 
     <result name="agenda" type="tiles">agenda</result> 
     <result name="servicios" type="tiles">mservicios</result> 
     <result name="consulta" type="tiles">consulta</result> 
     <result name="ayuda" type="tiles">ayuda</result> 
    </action> 
</package> 

<package name="contacto" extends="tiles"> 
    <action name="validar" class="validar.action.Validar" method="execute"> 
     <result name="success" type="tiles">finContacto</result> 
     <result name="input" type="tiles">contacto</result> 
    </action> 
</package> 

<package name="login" extends="tiles"> 
    <interceptors> 
     <interceptor name="loginInterceptor" class="login.interceptor.LoginInterceptor"> 
     </interceptor> 
     <interceptor-stack name="loginStack"> 
      <interceptor-ref name="loginInterceptor" /> 
      <interceptor-ref name="defaultStack" /> 
     </interceptor-stack> 
    </interceptors> 

    <!-- login action --> 
    <action name="login" class="login.action.Login"> 
     <result name="input" type="tiles">inicio</result> 
     <result name="success" type="tiles">usuarioLayout</result> 
    </action> 

    <!-- logout action --> 
    <action name="logout" class="login.action.Login" method="logout"> 
     <result name="success" type="tiles">inicio</result> 
    </action> 

</package> 

<package name="modificar" extends="tiles"> 
    <action name="modificar" class="modificar.action.Modificar" method="execute"> 
     <result name="success" type="tiles">finModificar</result> 
     <result name="input" type="tiles">menuLayout</result> 
    </action> 
</package> 

<package name="borrar" extends="titles"> 
    <action name="borrar" class="borrar.action.Borrar"> 
     <result name="success" type="tiles">inicio"</result>  
    </action> 
</package> 

javascriptFunctions.js

function borrarPerfil() { 
    if(confirm("Are you sure to delete this profile?")){ 
     alert("deleted"); 
     //CALL STRUTS2 ACTION borrar 

    } else { 
     alert("no paso nada"); 
    //CALL STRUTS2 ACTION logout 
    } 
} 
+0

URLへのマッピングを持つhttp呼び出しでStruts2が反応するかどうかは不明です。任意のhttpクライアントでアクセスできるいくつかのapiを公開する可能性があります。 –

+0

js関数でフォームを取得し、アクションに送信することができます。問題であると想定されるのは? – Will

+0

JavaScriptからバックエンド関数を呼び出すのと同じ方法です。特定の問題がどのようなものかとはっきりしていません。 –

答えて

0

は最後に、私はjavascriptの関数から呼び出す方法を解決します。私はそれを行うための正しい方法だと読ん

window.location = "${pageContext.request.contextPath}/logout"; 

:私はstrut2アクションを呼び出すために、次を使用しているため、私は間違っていた

javascriptFunctions.js

function borrarPerfil() { 
    if(confirm("Are you sure to delete this profile?")){ 
     alert("deleted"); 
     window.location = "/Barcelona_Business_World_v2/borrar"; 
    } else { 
     alert("no paso nada"); 
     window.location = "/Barcelona_Business_World_v2/logout"; 
    } 
} 

:それはこのようにする必要があります私はなぜ私の機能が失敗するのか分かりません。私はcontextPathの詳細を読む予定です。

ありがとうございました。

関連する問題