我正在尝试在我的Struts 2应用程序中实现ajax验证.我在构建路径中包含了struts2-json-plugin.每当我在Eclipse中启动服务器时,都会收到以下错误:
无法找到ref-name引用的拦截器类jsonValidationWorkflowStack - interceptor-ref - file:/ C:/path/struts.xml:15:60
这就是我的struts.xml的样子:
<struts>
<constant name="struts.url.includeParams" value="all" />
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="submitForm" class="action.FormAction" >
<interceptor-ref name="jsonValidationWorkflowStack"/>
<result>results.jsp</result>
<result name="input">index.jsp</result>
<result name="error">index.jsp</result>
</action>
</package>
</struts>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我下面的官方Struts2的AJAX验证教程的.
我的SQLAlchemy模型:
class Cover(db.Model):
# ... a bunch of other fields ...
@hybrid_property
def number_of_requests(self):
if self.requests:
return len(self.requests)
return 0
@number_of_requests.expression
def number_of_requests(cls):
return func.count(cls.requests)
class Request(db.Model):
# ... a bunch of other fields ...
# Cover that this request is requesting
cover_id = db.Column(db.Integer, db.ForeignKey('cover.id')
cover = db.relationship('Cover',
backref=backref("requests", cascade="all, delete-orphan"))
Run Code Online (Sandbox Code Playgroud)
因此,Cover和Request之间存在简单的一对多关系。该number_of_requests混合属性应该返回与特定的覆盖相关的请求数。
现在,在我的Flask路线之一中,我试图按请求数获取前5个Covers。这是现在的样子:
# Get top cover requests
covers = Cover.query.order_by(Cover.number_of_requests).limit(5).all()
Run Code Online (Sandbox Code Playgroud)
不幸的是,这给了
ProgrammingError:(ProgrammingError)缺少表“ request”的FROM子句条目
我怀疑这是因为在number_of_requests(cls)尝试计算requests列表的大小,但是SQLAlchemy尚未在原始查询中包括请求表。有关如何避免该错误的任何想法?