参数是子程序中使用的一种变量,用于引用作为子程序输入提供的数据。
在我的 Rails 应用程序中: 地点有_许多啤酒 啤酒属于位置 当iOS应用程序调用locations/%@/beers.json时,我希望啤酒控制器只响应属于该locat的啤酒...
如何将基于 cli 的参数函数转换为采用 python 参数的函数
我正在使用 google-api-python-client 库中的示例函数,该函数接受命令行参数并使用 argparser 解析它们。这是基于(转换为 python3)ht 的代码...
当我传递 3 个值时,Postman 说过程参数的数量是 4。高于数据库中的过程参数 3. 查询调用语句中的参数不匹配,
我在 C++ 中有两个节点使用相同的参数。 如果我想通过rqt重新配置node1的parameter_x,如果node2的parameter_x也自动更改,那就太好了。 是...
我想以可以传递静态参数的字符串数组的方式声明一个操作。我尝试了下面的代码: ...
打印以下代码示例: 时间 T[] T[] 虽然前两行符合预期,但为什么编译器选择 param array 作为常规数组? 公共A类 { 公共无效打印(T t) ...
如何在 Struts 2 中不使用 ModelDriven 的情况下从 JSP 填充 POJO?
我想在不使用 ModelDriven 的情况下从 JSP 初始化我的 POJO 类。 例如: 在 JSP 中 - 用户名和密码是输入字段。 有一个带有用户名和密码字段的 POJO 用户。 嗬...
感谢任何人可以在这里提供的任何帮助。 我正在尝试通过 Rest API 将 PowerBI 连接到系统。初始连接正在工作,并且返回了一个令牌,即“apiToken”,我
给定一个函数: def foo(num = 42, bar = 100): 打印(“数字:”,数字) 我如何向 foo 添加代码以了解 foo 是否在没有 num 和/或 bar 参数的情况下被调用?
我想用一些参数调用Action类,但我无法做到这一点。 请建议我如何在应用程序中使用映射 struts.xml 文件传递参数。 我正在使用 Struts2 框架...
在 Struts 2 的 JSP 页面上使用 OGNL 根据条件将 bean 分配给对象
在Struts 2 / OGNL页面中,是否可以根据条件将任何类型的bean分配给对象? 例如, 在Struts 2 / OGNL页面中,是否可以根据条件将任何类型的bean分配给对象? 举个例子, <s:if test"%{customer != null}"> <s:set var="someobject" value="customer"> </s:if> <s:else> <s:set var="someobject" value="user"> </s:else> 是的,可以。但你确定你应该这样做吗? 这似乎是业务,而不是表示,因此为什么在视图中而不是在控制器中? 而不是 <s:if test"%{customer != null}"> <s:set var="someobject" value="customer"> </s:if> <s:else> <s:set var="someobject" value="user"> </s:else> SomeObject is of type : <s:property value="%{#someobject.class.name}" /> 你可以在你的行动中使用 public String getSomeobject(){ return (customer!=null) ? customer : user; } 并且仅在 JSP 中 SomeObject is of type : <s:property value="%{someobject.class.name}" /> 当您的操作对对象一无所知时,您的用例更合适,但随后您将在视图中放入大量业务逻辑... <s:set>标签将变量存储在作为映射的值堆栈上下文中。因此任何对象都可以设置在 var 属性中指定的键下。如果您在带有 <s:set> 标签的页面上频繁使用相同的键,那么它将覆盖之前设置的值。例如 <s:set var="someobject" value="customer"> <s:set var="someobject" value="user"> 之后,如果您使用 user 引用,则只能检索 someobject 对象。 关于参考资料,您可以阅读OGNL文档。 该框架使用标准命名上下文来评估 OGNL 表达式。处理 OGNL 的顶级对象是 Map (通常 称为上下文映射或上下文)。 OGNL 有一个概念 是上下文中的根(或默认)对象。在表达上, 无需任何属性即可引用根对象的属性 特殊的“标记”概念。对其他对象的引用标有 英镑符号 (#)。 使用上面的示例,您可以使用对 someobject 的引用来获取 user 属性 name。 Hello, <s:property value="#someobject.name"/>
我有一个 URL=“deliverable.do?id=123” 单击提交按钮后,它会转到 validate() 方法并找到一些缺失的字段。 然后,当它返回显示问题时(这是......
它现在似乎可以工作了,谢谢。 我的问题是参数似乎在其中一个函数中丢失了。 我在 Windows 7 上使用 Code::Blocks 和 GNU GCC 编译器。 好吧,我有一个功能...
我有以下动作映射: ... 一个 两个 我有以下动作映射: <action name="theAction" ...> ... <param name="param1">one</param> <param name="param2">two</param> ... <param name="paramN">nth-number</param> ... </action> 我可以使用Interceptor中的以下行获取参数映射: Map<String, Object> params = ActionContext.getContext().getParameters(); 如上所述,有没有办法获取拦截器参数,如以下映射中所定义: <action name="theAction" ...> ... <interceptor-ref name="theInterceptor"> <param name="param1">one</param> <param name="param2">two</param> ... <param name="paramN">nth-number</param> </interceptor-ref> ... </action> action 参数定义如下,action 参数和拦截器参数应该是分开访问的。 <action name="theAction" ...> ... <param name="param1">one</param> <param name="param2">two</param> ... <param name="paramN">nth-number</param> .... <interceptor-ref name="theInterceptor"> <param name="param1">one</param> <param name="param2">two</param> ... <param name="paramN">nth-number</param> </interceptor-ref> ... </action> 请注意,我不想在拦截器中将参数字段声明为 //all fields with their getters and setters private String param1; private String param2; ... private String paramN; 在 Dev Blanked 的回答之后,我实施了他的技术。它不起作用,所以我在这里分享我的代码。我使用的是 Struts 2.3.1.2。 图书馆 asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang-2.5.jar freemarker-2.3.18.jar javassist-3.11.0.GA.jar ognl-3.0.4.jar struts2-core-2.3.1.2.jar xwork-core-2.3.1.2.jar struts.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="the-base" namespace="/" extends="struts-default" abstract="true"> <interceptors> <interceptor name="header" class="demo.interceptors.HttpHeaderInterceptor"></interceptor> <interceptor-stack name="theStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="header"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="theStack"></default-interceptor-ref> </package> <package name="the-module" extends="the-base"> <action name="theAction"> <result>/the-action.jsp</result> <interceptor-ref name="theStack"> <param name="header.Cache-control">no-store,no-cache</param> <param name="header.Pragma">no-cache</param> <param name="header.Expires">-1</param> <param name="header.arbitrary">true</param> </interceptor-ref> </action> </package> </struts> 拦截器: package demo.interceptors; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.StrutsStatics; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class HttpHeaderInterceptor extends AbstractInterceptor { private final Map<String, String> interceptorConfigs = new HashMap<String, String>(); @Override public String intercept(ActionInvocation invocation) throws Exception { System.out.println("Calling 'intercept' method."); HttpServletResponse response = (HttpServletResponse) invocation.getInvocationContext().get(StrutsStatics.HTTP_RESPONSE); for(Entry<String, String> entry: interceptorConfigs.entrySet()) { String header = entry.getKey(); String value = entry.getValue(); System.out.printf("Adding header: %s=%s\n",header,value); response.setHeader(header, value); } return invocation.invoke(); } public Map<String, String> getInterceptorConfigs() { System.out.println("calling method 'getInterceptorConfigs'"); return interceptorConfigs; } public void addInterceptorConfig(final String configName, final String configValue) { System.out.printf("Calling method 'addInterceptorConfig' with params configName = %s, configValue=%.\n",configName, configValue); interceptorConfigs.put(configName, configValue); } } 控制台输出:(当按下theAction时) Calling 'intercept' method. 在您的自定义拦截器中,您可以定义如下所示的地图 private final Map<String, String> interceptorConfigs = new HashMap<String, String>(); public Map<String, String> getInterceptorConfigs() { return interceptorConfigs; } public void addInterceptorConfig(final String configName, final String configValue) { interceptorConfigs.put(configName, configValue); } 然后在您的操作映射中,您可以传入如下参数..这些将存储在拦截器的映射中 <action name="yourAction" class="your.actionClass"> <result name="success">some.jsp</result> <interceptor-ref name="defaultStack"> <param name="yourInterceptor.interceptorConfigs.key">value</param> <param name="yourInterceptor.interceptorConfigs.aParamName">paramValue</param> </interceptor-ref> </action> “yourInterceptor”是指您在将拦截器添加到struts.xml时指定的拦截器的名称。当像上面那样配置时,拦截器内的“interceptorConfigs”映射将具有 , 键/值对。 如果您想让这些可用于您的操作,您只需在 ActionContext 中将地图设置为上下文变量即可。然后可以在操作中检索它。 简而言之,我会说不,如果您在 interceptor-ref 元素中定义拦截器参数,则无法获取它们。这些参数是在构建期间设置并应用于拦截器的。但是,如果您将参数放入 interceptor 元素,例如 <interceptor name="theInterceptor" class="com.struts.interceptor.TheInterceptor"> <param name="param1">one</param> <param name="param2">two</param> </interceptor> 您可以即时检索它们 PackageConfig packageConfig = Dispatcher.getInstance().getConfigurationManager().getConfiguration().getPackageConfig("default"); Map<String, Object> interceptorConfigs = packageConfig.getInterceptorConfigs(); InterceptorConfig interceptorConfig = (InterceptorConfig)interceptorConfigs.get("theInterceptor"); Map<String, String> params = interceptorConfig.getParams(); 如果您不想在拦截器上定义属性来保存值,那么 OGNL 将不会设置这些值,但会尝试,所以我看不出不定义这些属性的原因,如果您的 xml 配置标记为无效,拦截器 bean 不包含这些属性,在这种情况下构建器可能会抛出异常。因此,我不建议不定义参数的属性。
修改输入参数或声明新变量并修改它是否更有效(或在其他方面更好)?
我有一个代码,正如你所看到的,我可以用以下两种方式之一编写,问题是唯一的区别是因为在第二个函数中参数被声明为非常量我可以使用它
我有一个代码,正如你所看到的,我可以用以下两种方式之一编写,问题是唯一的区别是因为在第二个函数中参数被声明为非常量我可以使用它
如何将参数从 <s:iterator> 标签内的文本字段传递到 Struts 2 中的操作?
我有一个带有 标记列表的 JSP,该列表使用 getter/setter 迭代在操作中创建的对象。 我能够将映射值从操作拉到 我有一个带有 <s:iterator> 标签列表的 JSP,它使用 getter/setter 迭代在操作中创建的对象。 我能够将映射值从操作拉到 <s:iterator> 标签的文本字段,现在我希望能够将文本字段值从 <s:iterator> 传递回操作类以映射对象,但我意识到它不会调用我的 setter 方法。 这是我的JSP: <s:iterator status="stat" value="parameterList" > <tr id="<s:property value="#stat.index"/>"> <td><s:textfield id="parameterList[%{#stat.index}].queryParameter" name="parameterList[%{#stat.index}].queryParameter" cssClass="size30" labelposition="left" ></s:textfield> </td> <td><s:textfield id="parameterList[%{#stat.index}].parameterValue" name="parameterList[%{#stat.index}].parameterValue" cssClass="size30" labelposition="left" ></s:textfield> </td> </tr> </s:iterator> 这是该操作的片段: private List<QueryParameter> parameterList = new ArrayList<QueryParameter>(); public void setParameterList(List<QueryParameter> parameterList) { this.parameterList = parameterList; } public DQA getDqaObject() { return dqa; } 当我导航到 JSP 时,getter 被调用得很好,但是当我从 JSP 提交表单时,我期望放入 <s:iterator> 标记内的文本字段中的值应该传递并更新操作类中的对象,但是setter 没有被调用。 我解决了这个问题,问题是在我的 getter 中(我忘记在问题中发布)有一些逻辑阻止 getter 继续实际调用对象 setter 来设置参数。 OGNL 在创建新对象时不会调用 setter 方法。如果您想更新现有对象,也不需要它。它应该在填充操作之前初始化。 prepare拦截器可以调用您的操作,如果它实现了Preparable来执行prepare()方法,您可以在其中初始化要更新的对象。 如果您需要一个参数来从数据库检索对象,您可以使用paramsPrepareParams拦截器的堆栈。您可以查看说明在 Struts 2 中绑定后更改参数。 也不要使用 ModelDriven 接口,因为默认情况下它无法与上述堆栈一起正常工作。它需要重新配置默认堆栈以使模型在 params 拦截器 触发之前推送,否则您必须手动处理参数,即来自操作上下文或已弃用的 ParametersAware。
如何在 Struts 中拥有一个包含对象 id 的 URL,然后将其传递给一个操作以通过该 id 显示该对象?例如URL 是 /users/1,它显示了一个具有 id 的用户对象...
我正在编写一种小型脚本语言。 我正在寻找一种可移植的 C++ 方法将参数推送到调用堆栈上,以便我的函数能够正常读取它们。 这可能吗? 它必须...
我正在用操作附加参数,但在我的 Struts 2 页面上遇到异常。 PWC6212:需要等号 下面是我的操作,附加了参数代码,需要提交...