No configuration found for the specified action

本文详细介绍了Struts2框架中表单配置的常见问题及解决方案,包括如何正确配置namespace和action属性,确保框架能正确解析表单提交路径。
学习struts2 中时候控制台老是出现该警告错误。
我的客户端代码如下 (代码1):
Html代码

1. <s:form action="/admin/login" method="post">
2. <s:textfield name="username" id="usenrame" label="用户名" />
3. <s:password name="password" id="password" label="密码" />
4. <s:submit type="input" value="登录" id="btnsubmit" cssClass="btnsubmit"></s:submit>
5. </s:form>

<s:form action="/admin/login" method="post">
<s:textfield name="username" id="usenrame" label="用户名" />
<s:password name="password" id="password" label="密码" />
<s:submit type="input" value="登录" id="btnsubmit" cssClass="btnsubmit"></s:submit>
</s:form>





struts.xml中的配置代码如下 (代码2):
Xml代码

1. <package name="admin" namespace="/admin" extends="struts-default">
2. <action name="login" class="com.longweir.struts2.action.LoginAction">
3. <result name="success">/actionResult.jsp</result>
4. <result name="login" type="redirect">/admin/login.jsp</result>
5. <result name="input">/admin/login.jsp</result>
6. </action>
7. </package>

<package name="admin" namespace="/admin" extends="struts-default">
<action name="login" class="com.longweir.struts2.action.LoginAction">
<result name="success">/actionResult.jsp</result>
<result name="login" type="redirect">/admin/login.jsp</result>
<result name="input">/admin/login.jsp</result>
</action>
</package>





在网上搜索了下,搜索网络给出的答案几乎都说把<s:form action="/admin/login method="post" >中的login后加上.action后缀了,做了测试,问题仍然没有解决。



通过我观察发现有两个地方需要修改,首先<s: form>表单中需要加入命名空间参数namespace,和struts.xml中配置一致。其次,<s:form action=xxx> 中直接写action映射的名字,比如我的xml中是login,则这里直接写login即可,不需要画蛇添足加上.action后缀或者其他的前置路路径,所以修改后的客户端文件配置为 代码(3):


Html代码

1. <s:form action="login" method="post" namespace="/admin">
2. <s:textfield name="username" id="usenrame" label="用户名" />
3. <s:password name="password" id="password" label="密码" /> <s:submit type="input" value="登录" id="btnsubmit"
4. cssClass="btnsubmit">
5. </s:submit>
6. </s:form>

<s:form action="login" method="post" namespace="/admin">
<s:textfield name="username" id="usenrame" label="用户名" />
<s:password name="password" id="password" label="密码" /> <s:submit type="input" value="登录" id="btnsubmit"
cssClass="btnsubmit">
</s:submit>
</s:form>




当然,如果你不是使用的struts2的标签,而是使用的传统的html代码,则表单的action属性必须加上完整的路径和后缀

也就是说,必须改成如下代码:

<form name="form" method="post" action="/admin/login.action">



你如上指定后,当浏览器给出如上的请求/admin/login.action ,struts2框架将首先在sturts.xml中查找 /admin 名称空间,如果找到了(比如我这里显然有这个名称空间),则执行login.action,如果没有找到,会到默认的名称空间中查找,如果默认的也没有,则提示错误,没有映射该action.



分析下我出现的错误,在我的原始的代码 (代码1)中因为没有指定namespace,那么框架认为输出表单的请求和提交表单的请求都是在一个名称空间中,即使在/admin名称空间中,此事虽然可以找到,可以运行,但是会提示这个警告.





如果在你的struts.xml文件中指定了名称空间,那么,如果在客户端使用struts2的标签,则要同样指定名称空间,但action= 这后面,直接写action名即可,不需要加上名称空间的前缀在前面。

因为,struts2框架会根据你所指定的名称空间以及你系统当前应用所映射的路径,构造一个完整的请求路径。比如如上正确的 代码3的 struts2代码,在浏览器中查看源码,解析的结果是:


Html代码

1. <form id="login" name="/admin" action="/guestbook/admin/login.action" method="post">
2. <table class="wwFormTable">
3. <tr>
4. <td class="tdLabel">
5. <label for="usenrame" class="label">用户名:</label> </td>
6. <td><input type="text" name="username" value="" id="usenrame"/></td>
7. </tr>
8. <tr>
9. <td class="tdLabel"><label for="password" class="label">密码:</label></td>
10. <td><input type="password" name="password" id="password"/></td>
11. </tr>
12. <tr> <td colspan="2"><div align="right"><input type="submit" id="btnsubmit" value="登录" class="btnsubmit"/> </div></td>
13. </tr>
14. </table>
15. </form>

<form id="login" name="/admin" action="/guestbook/admin/login.action" method="post">
<table class="wwFormTable">
<tr>
<td class="tdLabel">
<label for="usenrame" class="label">用户名:</label> </td>
<td><input type="text" name="username" value="" id="usenrame"/></td>
</tr>
<tr>
<td class="tdLabel"><label for="password" class="label">密码:</label></td>
<td><input type="password" name="password" id="password"/></td>
</tr>
<tr> <td colspan="2"><div align="right"><input type="submit" id="btnsubmit" value="登录" class="btnsubmit"/> </div></td>
</tr>
</table>
</form>






可以看到,输出的action 请求地址非常正确,自动加入了当前应用的名称和根据namespace所整理成的完整的请求路径:"/guestbook/admin/login.action



但是,假如我们人为的在action后面加上 action="/admin/login" ,虽然你指定了namespace="/admin" ,那struts2框架不会给你加上.action的后缀(可以查看输出的html源码中是没有.action这个后缀的),最后还是会出现标题中所提示的警告,虽然还是可以正常工作.




1. 如果你的xml配置文件中设置了namespace ,建议你的终端的struts2表单标签中也设置一样的namespace

2. 如果已经按照1中的设置,那么 action = 后面直接写action名字即可,不需要加后缀(默认就会加上,xml中也一样)

3. 以上仅是针对使用struts2标签的情况下,如果你没用struts2 的标签而是使用的原始HTML标签,则action=后面必须是完整的路径地址: /应用名/名称空间/xxx.action (action 后缀要有),因为很显然,struts2不会给你自动加上那些信息。
API Description Packet Analyzer Manager APIs cpssDxChPacketAnalyzerManagerCreate Creates a Packet Analyzer Manager cpssDxChPacketAnalyzerManagerDelete Deletes a Packet Analyzer Manager cpssDxChPacketAnalyzerManagerDeviceAdd Associate a device with a Packet Analyzer Manager cpssDxChPacketAnalyzerManagerDeviceRemove Disassociate a device with a Packet Analyzer Manager cpssDxChPacketAnalyzerManagerEnableSet Enables/Disables Packet Analyzer for the device associated with the PA Manager. Following creation, enabling is required to activate the PA Manager cpssDxChPacketAnalyzerManagerDevicesGet Obtains the device managed by a PA Manager, and whether the PM Manager is enabled for the device cpssDxChPacketAnalyzerManagerResetToDefaults Resets a Packet Analyzer manager configuration to default settings. Deletes all keys, rules, and groups; actions are not deleted Field and Key APIs cpssDxChPacketAnalyzerFieldSizeGet Gets field length, in bits cpssDxChPacketAnalyzerLogicalKeyCreate Creates a key with lists of stages and fields. It is possible to create a key with no fields, which results in sampling of the interface with no filtering cpssDxChPacketAnalyzerLogicalKeyDelete Deletes a key cpssDxChPacketAnalyzerLogicalKeyFieldsAdd Adds fields to field list of an existing key cpssDxChPacketAnalyzerLogicalKeyFieldsRemove Removes fields from field list of a key cpssDxChPacketAnalyzerLogicalKeyInfoGet Gets name and field assignment mode of a key cpssDxChPacketAnalyzerLogicalKeyStagesGet Gets Stage list of a key cpssDxChPacketAnalyzerLogicalKeyFieldsPerStageGet Gets list of fields per Stage included in a key cpssDxChPacketAnalyzerUserDefinedFieldAdd Adds a new User Defined field cpssDxChPacketAnalyzerUserDefinedFieldDelete Deletes a User Defined field cpssDxChPacketAnalyzerUserDefinedFieldGet Obtains attributes of User Defined field with the specified name cpssDxChPacketAnalyzerUserDefinedFieldInfoGet Obtains attributes of User Defined Field with enumerated name Action APIs cpssDxChPacketAnalyzerActionCreate Creates an action cpssDxChPacketAnalyzerActionUpdate Updates an action attributes cpssDxChPacketAnalyzerActionDelete Deletes an action cpssDxChPacketAnalyzerActionGet Gets an action configuration cpssDxChPacketAnalyzerActionSamplingEnableSet Enables/Disables sampling for the specified Action Group and Rule APIs cpssDxChPacketAnalyzerGroupCreate Creates a group of rules cpssDxChPacketAnalyzerGroupDelete Deletes a group as well as the rules in it cpssDxChPacketAnalyzerGroupRuleAdd Creates a rule in a group. Verifies the new rule does not conflict with existing rules in the group, and returns an error if it does cpssDxChPacketAnalyzerGroupRuleUpdate Modifies rule attributes, namely field values and action, in a group. Verifies the updated rule does not conflict with other rules in the group, and if it does, returns an error with no update applied cpssDxChPacketAnalyzerGroupRuleDelete Deletes a rule from a group cpssDxChPacketAnalyzerGroupRuleGet Returns definition of a specific rule in a group: key, rule name, list of field values, and action cpssDxChPacketAnalyzerGroupActivateEnableSet Activates/deactivates a group of rules. When a group is activated, its rules are programmed into the switch Data Sampling and Rule Matching APIs cpssDxChPacketAnalyzerSampledDataCountersClear Clears sampling data and counters for a packet analyzer rule cpssDxChPacketAnalyzerRuleMatchStagesGet Gets list of Stages in which a PA rule match was found cpssDxChPacketAnalyzerStageMatchDataGet Gets number of matches, and the sampled field values cpssDxChPacketAnalyzerStageMatchDataAllFieldsGet Gets the stage sampled data for all fields of the specified rule cpssDxChPacketAnalyzerRuleMatchDataAllFieldsByAttributeGet Gets the stage sampled data for all predefine fields of the specified rule and specific search attributes (port/tile, pipe, dp) Falcon only cpssDxChPacketAnalyzerStageMatchDataAllInternalFieldsGet Gets the stage sampled data for all unnamed fields of the specified rule cpssDxChPacketAnalyzerStageMatchDataAllInternalFieldsByAttributesGet Gets the stage sampled data for all unnamed fields of the specified rule for specific search attributes (port/tile, pipe, dp) Falcon only Stage APIs cpssDxChPacketAnalyzerStageFieldsGet Gets list of fields in a Stage cpssDxChPacketAnalyzerStagesGet Gets the list of Stages currently managed by the Manager, and the list of valid Stages cpssDxChPacketAnalyzerFieldStagesGet Gets list of stages including the specified field cpssDxChPacketAnalyzerMuxStagesGet Gets the list of Stages connected to the same i-Debug Instance as the specified Stage cpssDxChPacketAnalyzerMuxStageBind Binds the specified Stage to its i-Debug Instance cpssDxChPacketAnalyzerMuxStageUnbind Unbinds the specified Stage from its i-Debug Instance cpssDxChPacketAnalyzerUserDefinedStageAdd Adds a new User Defined Stage cpssDxChPacketAnalyzerUserDefinedStageDelete Deletes a User Defined Stage cpssDxChPacketAnalyzerUserDefinedStageGet Obtains attributes of User Defined Stage with specified name cpssDxChPacketAnalyzerUserDefinedStageInfoGet Obtains attributes of User Defined Stage with enumerated name cpssDxChPacketAnalyzerStageFieldOverlappingFieldsGet Gets a list of Packet Analyzer fields overlapping the specified field in stage This is important since only a valid field may be matched, which means overlapping fields cannot be matched simultaneously There are no dedicated APIs for configuring the packet-trace feature. The user should configure the packet match criteria in the i-pcl stage, and configure a match on the packet_trace field is the subsequent Stages. Structures and Unions Table 175: Packet Analyzer Structures & Unions Structure / Union Description CPSS_DXCH_PACKET_ANALYZER_COUNTER_INTERRUPT_THRESH_STC Counter threshold. This is a structure due to the counter being spread over several registers CPSS_DXCH_PACKET_ANALYZER_ACTION_STC Packet Analyzer Action configuration CPSS_DXCH_PACKET_ANALYZER_KEY_ATTRIBUTES_STC Packet Analyzer Key attributes (currently name) CPSS_DXCH_PACKET_ANALYZER_GROUP_ATTRIBUTES_STC Packet Analyzer Group attributes (currently name) CPSS_DXCH_PACKET_ANALYZER_RULE_ATTRIBUTES_STC Packet Analyzer Rule attributes (currently name) CPSS_DXCH_PACKET_ANALYZER_MANAGER_ATTRIBUTES_STC Packet Analyzer manager attributes - system mode CPSS_DXCH_PACKET_ANALYZER_FIELD_VALUE_STC Field name, value, and mask CPSS_DXCH_PACKET_ANALYZER_SEARCH_ATTRIBUTE_STC Packet Analyzer search attributes - contains the parameters required according to the search type CPSS_DXCH_PACKET_ANALYZER_INTERNAL_FIELD_VALUE_STC Unnamed field value (data and mask) Enumerations Table 176: Packet Analyzer Enumeration Types Enumeration Description CPSS_DXCH_PACKET_ANALYZER_FIELD_ENT Packet Analyzer pre-defined fields CPSS_DXCH_PACKET_ANALYZER_FIELD_ASSIGNMENT_MODE_ENT Field assignment modes (all / partial) CPSS_DXCH_PACKET_ANALYZER_SAMPLING_MODE_ENT Sampling modes (first / last match) CPSS_DXCH_PACKET_ANALYZER_LOOKUP_STAGES_ENT Packet Analyzer Pre-defined Stages CPSS_DXCH_PACKET_ANALYZER_SEARCH_ATTRIBUTE_TYPE_ENT Packet Analyzer search types我想用上述接口实现丢包统计,该怎么做
最新发布
09-16
Software Considerations – Configuration To configure the PA Manager: To create a PA Manager, call cpssDxChPacketAnalyzerManagerCreate, with the managerId parameter set (beginning with 1). To enable the PA Manager, call cpssDxChPacketAnalyzerManagerEnableSet, with the enable parameter set to GT_TRUE. Verify the XML file specifying the i-Debug configuration specific for the device is loaded under the appropriate location. See i-Debug XML Files for locations per platform. Set the device associated with the PA Manager, by calling with the CPSS device number, commonly 0. Should the XML configuration file be missing from the appropriate location, the API returns GT_FAIL. To create a Logical key, call cpssDxChPacketAnalyzerLogicalKeyCreate with: Key ID and name (keyAttrPtr is pointer to key name) A list of stages (CPSS_DXCH_PACKET_ANALYZER_LOOKUP_STAGES_ENT) and fields (CPSS_DXCH_PACKET_ANALYZER_FIELD_ENT) filtered by key NOTE: The key contains only the list of fields. The values determining the sampling/filtering is set by rules using that key - in each rule a list of respective field values. fieldModePtr key creation mode set to ALL / PARTIAL (see table Field Assignment Modes – CPSS_DXCH_PACKET_ANALYZER_FIELD_ASSIGNMENT_MODE_ENT) To create an action, call cpssDxChPacketAnalyzerActionCreate with: Action ID Action to perform samplingEnable set to GT_TRUE To apply the action to descriptors with field values other than those specified in the rule, set inverseEnable to GT_TRUE To create a group of rules, call cpssDxChPacketAnalyzerGroupCreate with its ID and name. To add a rule to a group, call cpssDxChPacketAnalyzerGroupRuleAdd with the following parameters setup: managerId – PA Manager ID keyId – Key ID containing list of fields for which the rule should specify the values, and list of stages in which to match/test these fields groupId – Group ID ruleId – The new rule ID ruleAttPtr – The new rule name numOfFields and fieldsValueArr – Respectively, number and list of specified field values matching the key fields actionId – An existing action ID to perform upon a found match To add keys, actions, rules, and groups, repeat steps 6. through 9.. To activate a group, call cpssDxChPacketAnalyzerGroupActivateEnableSet with the group ID and the enable parameter set to GT_TRUE. Run traffic. To disable a group, call cpssDxChPacketAnalyzerGroupActivateEnableSet with the group ID and the enable parameter set to GT_FALSE. To obtain the list of sampled stages, call cpssDxChPacketAnalyzerRuleMatchStagesGet. To display the sampled data – counters, field names, and field values, for a specific stage, call cpssDxChPacketAnalyzerStageMatchDataGet or cpssDxChPacketAnalyzerStageMatchDataAllFieldsGet. The first returns the values of fields included as input in the field list, and the latter - the values for all stage fields.
09-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值