有没有办法在CXF的拦截器里获得调用方法的名称及参数值

有没有办法在CXF的拦截器里获得调用方法的名称及参数值,第1张

是可以 你这样获取的到是xml,需要转化成对象

Object obj = messagegetContent(Listclass)get(0);

这里获取的obj对象就是cxf动态生成的class类,你debug就能看到,所有的参数都在这个obj里面

剩下就的就是反射出来了。

__ROOT__ : 网站根目录地址

__APP__ : 当前项目(入口文件)地址

__GROUP__ :当前分组地址

__URL__ : 当前模块地址

__ACTION__ : 当前 *** 作地址

__SELF__ : 当前 URL 地址

ACTION_NAME : 当前 *** 作名称

APP_PATH : 当前项目目录

APP_NAME : 当前项目名称

这些都是一些系统常量,可以在控制器里面直接调用 比如说 echo __APP__

帮你写了一下,测试通过:

    public class SeleniumUtil

    {

        public static void getFileName()

        {

            StackTrace trace = new StackTrace();

            StackFrame frame = traceGetFrame(1);

            MethodBase method = frameGetMethod();

            String className = methodReflectedTypeName;

            ConsoleWrite("ClassName:" + className + "\nMethodName:" + methodName);

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            SeleniumUtilgetFileName();

            ConsoleReadLine();

        }

    }

运行结果如下:

利用默认成员特性可以动态的获取此方法名

下面是一个示例:

using System;

using SystemReflection;

namespace Cshcn

{

public class Program

{

static void Main()

{

TestClass t=new TestClass();

string methodName=tGetMethod();//调用成员GetMethod,并返回成员名

if(methodName!=null)

ConsoleWriteLine(methodName);

}

}

[DefaultMemberAttribute("GetMethod")] //特性:绑定类型的默认成员

public class TestClass

{

public string GetMethod()

{

Type t=typeof(TestClass);

MemberInfo[] mi=tGetDefaultMembers();

if(miLength>0)

{

foreach(MemberInfo m in mi)

{

ConsoleWriteLine("Return owner name");

return mName; //返回方法

}

}

return null;

}

}

}

"在运行时要在方法Myfun()中得到这个方法的名称,有没有什么一般的通用方法?"

利用反射技术和自定义特性就可以动态获取并实现。反射可以查询类型的成员,特性可以

对成员进行标注。有点儿复杂的示例就不写了!

无论你怎么写,对该方法不做绑定标记,恐怕不行!

"在方法中获取方法名"

有点儿让人费解,不知道你碰到了什么问题!

方法名在程序的什么地方都可以获取!只要你想

不知道,这是不是你想要的答案。

可以使用以下代码来获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名。

import javaioFile;

import javalangreflectMethod;

public class LoopApp {

public static void main(String[] args) throws Exception {

String packageName = "";

File root = new File(SystemgetProperty("userdir") + "\\src");

loop(root, packageName);

}

public static void loop(File folder, String packageName) throws Exception {

File[] files = folderlistFiles();

for (int fileIndex = 0; fileIndex < fileslength; fileIndex++) {

File file = files[fileIndex];

if (fileisDirectory()) {

loop(file, packageName + filegetName() + "");

} else {

listMethodNames(filegetName(), packageName);

}

}

}

public static void listMethodNames(String filename, String packageName) {

try {

String name = filenamesubstring(0, filenamelength() - 5);

Object obj = ClassforName(packageName + name);

Method[] methods = objgetClass()getDeclaredMethods();

Systemoutprintln(filename);

for (int i = 0; i < methodslength; i++) {

Systemoutprintln("\t" + methods[i]getName());

}

} catch (Exception e) {

Systemoutprintln("exception = " + egetLocalizedMessage());

}

}

}

以上就是关于有没有办法在CXF的拦截器里获得调用方法的名称及参数值全部的内容,包括:有没有办法在CXF的拦截器里获得调用方法的名称及参数值、thinkphp5 怎么获取控制器下所有方法名称、c# 获得方法的调用者的调用者的类名,方法名等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9489803.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存