GVKun编程网logo

如何使用JavaScript调用Struts2 Action Class方法中的方法(怎么调用javascript)

20

针对如何使用JavaScript调用Struts2ActionClass方法中的方法和怎么调用javascript这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展ActionScript3调

针对如何使用JavaScript调用Struts2 Action Class方法中的方法怎么调用javascript这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展ActionScript 3调用JavaScript函数、Android Webview:从javascript调用java方法执行javascript、java.lang.ClassNotFoundException:org.apache.struts.action.ActionServlet、javascript – 如何使AngularJS忽略ajax OPTIONS方法?等相关知识,希望可以帮助到你。

本文目录一览:

如何使用JavaScript调用Struts2 Action Class方法中的方法(怎么调用javascript)

如何使用JavaScript调用Struts2 Action Class方法中的方法(怎么调用javascript)

当前,当其中一个字段值更改时,我们将使用以下javascript提交表单。

var url = "project/location/myAction.action?name="+ lname ; document.forms[0].action = url;document.forms[0].submit();

调用以下Struts2动作

<action name="myAction">    <result name="success" type="tiles">myAction</result>   </action>

然后转到execute()Action类的方法,在该方法中NameAction,我必须检查表单是否从javascript提交。

我希望直接从javascript中调用该findName()方法NameAction。换句话说,我希望javascript像下面的jsp代码一样工作。

<s:submit method="findName" key="button.clear" css>

任何帮助,将不胜感激!

答案1

小编典典

有多种方法可以实现所需的目标,但可能更简单的方法是将不同的动作映射到同一动作类文件的不同方法。带有注释:

public class NameAction {    @Action("myAction")    public String execute(){ ... }    @Action("myActionFindName")    public String findName(){ ... }}

或使用XML:

<action name="myAction">    <result name="success" type="tiles">myAction</result>   </action><action name="myActionFindName"method="findName">    <result name="success" type="tiles">myAction</result>   </action>

然后在javascript中:

var url = "project/location/myActionFindName.action?name="+ lname ;

ActionScript 3调用JavaScript函数

ActionScript 3调用JavaScript函数

是否可以在Flash(AS3)中调用JavaScript函数?不在同一个域中呢?您可以为同一个域而不是同一个域提供示例代码段吗?

谢谢!

解决方法:

使用ExternalInterface,可以从Flash与JavaScript通信,但是只能在运行Flash应用程序的窗口中进行通信.

就像这样做一样容易:

@H_301_12@ExternalInterface.call("jsFunctionName", argument, argument, ...);

要进行相反操作(从JavaScript调用Flash),请先执行以下操作:

@H_301_12@ExternalInterface.addCallback("jsFunctionName", callbackFunction); function callbackFunction(arg:String):void { trace(arg); }

然后,您可以从JavaScript调用jsFunctionName(“ foo”).

有关更多信息,请参见adobe docs.

至于您的跨网域,据我所知,还可以,但是您可以通过服务器代理该呼叫.

Android Webview:从javascript调用java方法执行javascript

Android Webview:从javascript调用java方法执行javascript

我有以下 javascript代码:

function mine()
    {
        var i = 3;
        Androidobject.call();
    }

其中Androidobject是java的javascript接口.它有方法调用

WebView myWebView;

    public void call()
    {
        runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                myWebView.loadUrl(''javascript:alert(i);'');
            }
        });
    }

在javascript中执行“i is not defined”时,以下代码将产生错误,因为javascript将不会在调用java代码的上下文中执行.

是否可以在相同的上下文中从java方法执行JS,即在上面的情况下使“i”可见?

在这个例子中,“i”是整数,但它可能是任何类型的对象.

谢谢.

解决方法

假设我是一个整数,

function mine()

 {

var i = 3;

Androidobject.call(i);

}

WebView myWebView;

public void call(Integer i)
{
Integer temp = i;
    runOnUiThread(new Runnable()
    {
        @Override
        public void run()
        {
            myWebView.loadUrl(''javascript:alert('' + temp + '');'');
        }
    });
}

java.lang.ClassNotFoundException:org.apache.struts.action.ActionServlet

java.lang.ClassNotFoundException:org.apache.struts.action.ActionServlet

我得到了Tomcat错误:

Sep 09,2012 3:27:48 PM org.apache.catalina.core.AprLifecycleListener init
information: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Products\jdk1.7.0_03\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Products/jdk1.7.0_03/jre/bin/client;C:/Products/jdk1.7.0_03/jre/bin;C:/Products/jdk1.7.0_03/jre/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Products\jdk1.7.0_03\jre\bin;c:\Program Files (x86)\Microsoft sql Server\100\Tools\Binn\;c:\Program Files\Microsoft sql Server\100\Tools\Binn\;c:\Program Files\Microsoft sql Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft sql Server\100\Tools\Binn\VSShell\Common7\IDE\;c:\Program Files (x86)\Microsoft sql Server\100\DTS\Binn\;C:\Products\eclipse32;;.
Sep 09,2012 3:27:48 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
Warnung: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:NAR_JDBC_DBO' did not find a matching property.
Sep 09,2012 3:27:49 PM org.apache.coyote.AbstractProtocol init
information: Initializing ProtocolHandler ["http-bio-80"]
Sep 09,2012 3:27:49 PM org.apache.coyote.AbstractProtocol init
information: Initializing ProtocolHandler ["ajp-bio-8009"]
Sep 09,2012 3:27:49 PM org.apache.catalina.startup.Catalina load
information: Initialization processed in 1359 ms
Sep 09,2012 3:27:49 PM org.apache.catalina.core.StandardService startInternal
information: Starting service Catalina
Sep 09,2012 3:27:49 PM org.apache.catalina.core.StandardEngine startInternal
information: Starting Servlet Engine: Apache Tomcat/7.0.27
Sep 09,2012 3:27:49 PM org.apache.catalina.startup.TaglibUriRule body
information: TLD skipped. URI: http://struts.apache.org/tags-html is already defined
Sep 09,2012 3:27:49 PM org.apache.catalina.startup.TaglibUriRule body
information: TLD skipped. URI: http://struts.apache.org/tags-bean is already defined
Sep 09,2012 3:27:49 PM org.apache.catalina.startup.TaglibUriRule body
information: TLD skipped. URI: http://struts.apache.org/tags-nested is already defined
Sep 09,2012 3:27:49 PM org.apache.catalina.startup.TaglibUriRule body
information: TLD skipped. URI: http://struts.apache.org/tags-logic is already defined
Sep 09,2012 3:27:49 PM org.apache.catalina.core.ApplicationContext log
information: Marking servlet action as unavailable
Sep 09,2012 3:27:49 PM org.apache.catalina.core.StandardContext loadOnStartup
Schwerwiegend: Servlet /NAR_JDBC_DBO threw load() exception
java.lang.classNotFoundException: org.apache.struts.action.ActionServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:124)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1566)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1556)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Sep 09,2012 3:27:49 PM org.apache.coyote.AbstractProtocol start
information: Starting ProtocolHandler ["http-bio-80"]
Sep 09,2012 3:27:49 PM org.apache.coyote.AbstractProtocol start
information: Starting ProtocolHandler ["ajp-bio-8009"]
Sep 09,2012 3:27:49 PM org.apache.catalina.startup.Catalina start
information: Server startup in 725 ms

这是我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <display-name>NAR_JDBC_DBO</display-name>
 <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>
  <init-param>
   <param-name>validate</param-name>
   <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
 <jsp-config>
  <taglib>
   <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
   <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>
  <taglib>
   <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
   <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>
  <taglib>
   <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
   <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>
  <taglib>
   <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
   <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
  </taglib>
 </jsp-config>
</web-app>

显然,org.apache.struts.action.ActionServlet中的Servlet名称“Action”存在问题. Unfurtunatley我不知道我做错了什么.你有个主意吗?
许多事先提前.
奥利

解决方法

发生此错误是因为您的servlet-core jar不在运行时类路径上.
如果你正在使用maven,

>打开您的EAR / Web项目属性
>点击“部署装配”
>点击“添加…”
>选择“Java Build Path Entries”
>点击“下一步”
>选择“Maven Dependencies”
>点击“完成”

如果不是maven,请确保放置jar的lib文件夹位于“Deployment Assembly”.

javascript – 如何使AngularJS忽略ajax OPTIONS方法?

javascript – 如何使AngularJS忽略ajax OPTIONS方法?

在进行跨域Ajax POST请求时,AngularJS首先发送HTTP OPTIONS请求. jQuery做同样的事情,我理解这是规范的一部分.区别在于如果OPTIONS请求出现错误(例如服务器不支持它,通常就是这种情况),jQuery将继续并发出POST请求,而AngularJS只是默默地失败并放弃.有没有办法强迫它发出POST请求?

解决方法:

正如Guillaume86所说,如果请求是跨域的,则浏览器会发送OPTIONS请求(也就是预检CORS请求).请参见规格http://www.w3.org/TR/cors/.如果设置缓存标头,浏览器将缓存它.例如:

 Access-Control-Max-Age: 1728000

我们今天的关于如何使用JavaScript调用Struts2 Action Class方法中的方法怎么调用javascript的分享已经告一段落,感谢您的关注,如果您想了解更多关于ActionScript 3调用JavaScript函数、Android Webview:从javascript调用java方法执行javascript、java.lang.ClassNotFoundException:org.apache.struts.action.ActionServlet、javascript – 如何使AngularJS忽略ajax OPTIONS方法?的相关信息,请在本站查询。

本文标签: