Cannot retrieve definition for form bean null on action

本文详细介绍了在使用Struts框架时,如何正确配置HTML表单与ActionBean之间的关联,避免出现无法获取定义的错误。通过提供具体的配置示例和解释,帮助开发者解决在开发过程中遇到的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用struts的<html:form>标签,抛出Cannot retrieve definition for form bean null on action Cart.do异常。

 

jsp页:

<html:form action="Cart.do" method="post">
			<table>
				<tr>
					<th>
						<b>Item ID</b>
					</th>
					<th>
						<b>Product ID</b>
					</th>

 struts-comfig.xml配置:

 

<action path="/Cart"
  			type="test.frankco.web.actions.CartAction"
  			scope="request"
  			parameter="method">
  		<forward name="VIEW_CART" path="/jsp/cart/Cart.jsp"></forward>
  	</action>

 

原来,当我们使用html的<form >时,不需要配置struts的form-beans可以正常使用;

但如果要使用struts的<html:form>标签,则一定要配置form-beans,并制定配置到相应的action

 

struts-config.xml配置修改如下;

<form-beans>
  	<form-bean name="cartItemForm" type="test.frankco.web.forms.CartItemForm"></form-bean>
  </form-beans>

...

<action path="/Cart"
  			type="test.frankco.web.actions.CartAction"
  			scope="request"
  			parameter="method"
  			name="cartItemForm">
  		<forward name="VIEW_CART" path="/jsp/cart/Cart.jsp"></forward>
  	</action>

加上cartItemForm的配置。

 表示form表单与继承了ActionForm的表单元素与cartItemForm的属性一一对应,提交<html:form>表单时,struts会将表单的值自动填充到cartItemForm对应的属性中。

### 解决方案 无法检索镜像列表的问题通常与 `epel` 配置有关。当遇到错误提示 `Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again` 时,可以尝试以下方法来解决问题。 #### 方法一:更新 EPEL 源配置 EPEL(Extra Packages for Enterprise Linux)源可能由于网络连接问题或配置文件损坏而失效。可以通过重新安装 EPEL 软件包并清理缓存来修复此问题[^1]: ```bash sudo yum remove epel-release sudo yum clean all sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ``` 上述命令会移除现有的 EPEL 软件包,清除 YUM 缓存,并重新安装最新的 EPEL 版本。 --- #### 方法二:手动编辑 `/etc/yum.repos.d/epel.repo` 如果仍然存在问题,则可能是 `epel.repo` 文件中的 URL 不可用。打开该文件并修改其内容以指向有效的镜像站点: ```bash sudo vi /etc/yum.repos.d/epel.repo ``` 找到 `[epel]` 下的 `metalink` 或 `baseurl` 字段,将其替换为可靠的镜像地址,例如: ```ini [epel] name=Epel Repository baseurl=https://download.fedoraproject.org/pub/epel/$releasever/$basearch/ enabled=1 gpgcheck=0 ``` 保存更改后运行以下命令刷新缓存: ```bash sudo yum clean all && sudo yum makecache ``` --- #### 方法三:禁用 Metalink 并强制使用 BaseURL 有时金属链接 (`metalink`) 可能不可靠,因此可以直接禁用它并切换到固定的 `baseurl` 地址。在 `epel.repo` 中设置如下参数: ```ini metalink= baseurl=http://mirrors.aliyun.com/epel/$releasever/$basearch/ ``` 这一步骤将确保系统始终从指定的阿里云镜像获取数据。 --- #### 方法四:检查防火墙状态 确认服务器上的防火墙未阻止必要的端口访问。如果启用了 `firewalld`,则需停止服务或将特定端口开放给外部请求[^2]: ```bash sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service ``` 或者仅允许 HTTP(S) 流量通过防火墙规则: ```bash sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload ``` --- #### 方法五:验证 DNS 设置 DNS 配置不正确也可能导致无法解析远程仓库地址。检查 `/etc/resolv.conf` 是否包含有效名称服务器记录: ```plaintext nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 如果没有这些条目,请添加它们以便于全局互联网域名查询。 --- ### 总结 以上提供了多种解决方案用于处理 CentOS 上因 EPEL 存储库引起的 “Cannot Retrieve MirrorList” 错误情况。具体实施取决于实际环境及故障原因分析结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值