我有个疑问.Struts2 Modeldriven接口如何工作.在我的应用程序中,我用于单个表单.我将setter和getter与表单名称相同.是否可以ModelDriven使用setter和getter 放置多个对象.如果我这样放置它会如何识别?
编程语言在其历史中有几个(r)进化步骤.有些人认为模型驱动的方法将是"下一件大事".有一些工具,如openArchitectureWare,AndroMDA,Sculptor/Fornax平台等,可以带来令人难以置信的生产力提升.然而,我的经验是,它在开始时要么相当容易,但是当你尝试一些意想不到的东西或者很难找到足够的信息来告诉你如何开始你的项目时,也会陷入困境.可能有很多事情需要考虑.
我认为从模型驱动的东西中获取任何东西的重要见解是理解模型不一定是一组漂亮的图片或树模型或UML,但也可能是文本描述(例如状态机,业务规则)等等.).
您如何看待,您的经历告诉您什么?是否存在模型驱动开发的未来(或者您可能想要称之为的任何东西)?
更新:这个主题似乎没有太多兴趣.如果您对模型驱动方法有任何(好的或坏的)经验,或者您认为它根本没有意义,请告诉我.
我正在尝试在我的Struts2 Web应用程序(使用JQuery插件)中使用Ajax验证,我有一个问题.
我在使用@Validations注释时遇到了问题所以我只是覆盖了validate()方法,并且在验证过程中所有的xhtml表单都可以正常工作.字段错误很好地收到并打印在gui中.
事实是,在验证表单时,会向服务器发送第二个POST以启动Action.但是,我不知道为什么,框架没有设置模型的属性,并且在执行Action之后生成HTML响应时,框架无法访问属性(仅当我使用jsonValidationWorkflowStack时).
我创建了一个简单的例子:
那个行动
@Namespace("/actions")
@ParentPackage("actions")
@InterceptorRef(value = "jsonValidationWorkflowStack")
public class ActionTest extends ActionSupport implements
ModelDriven<ModelTest>, ParameterAware {
private static final long serialVersionUID = 1L;
private ModelTest model;
private Map<String, String[]> parameters;
public ActionTest() {
model = new ModelTest();
}
@Action(value = "actionTest", results = {
@Result(name = SUCCESS, location = "/jsp/win.jsp"),
@Result(name = ERROR, location = "/jsp/loose.jsp"),
})
public String executeAction1() throws Exception {
System.out.println("pass: "+getModel().getPass()); //the field is always null
if ("test".equals(getModel().getPass()))
return SUCCESS;
return ERROR; …Run Code Online (Sandbox Code Playgroud) 我在角度2中创建了一个模型驱动的表单,只有当上面的复选框未选中时,其中一个输入字段才会显示.我使用*ngIf执行此操作.我的问题是,如果取消选中该复选框,我该如何设置所需的输入?在角度1.xi可以使视图中的ng-required ="condition"发生这种情况.
这是html:
//复选框
<div class="checkbox col-sm-9">
<label>
<input type="checkbox" id="getCompanyAddress" style="cursor: pointer;" [formControl]="form.controls['address']" >Use the company address
</label>
</div>
Run Code Online (Sandbox Code Playgroud)
//选项输入:
<div *ngIf="form.value.address == false" class="form-group" [ngClass] = "{'has-error':!form.controls['address'].valid && form.controls['address'].touched}" >
<label for="add_gestion_adress" class="col-sm-3 control-label">Address
</label>
<div class="col-sm-9"><textarea rows="1" id="add_gestion_adress" class="form-control" name="add_gestion_adress" [formControl]="form.controls['address']" ></textarea>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
//和型号代码:
form: FormGroup;
constructor(fb:FormBuilder){
this.form = fb.group({
'name': [null,Validators.compose([Validators.required, Validators.minLength(1)])],
'type': ["en gros",Validators.compose([Validators.required, Validators.minLength(2)])],
'person':[null,Validators.compose([Validators.required, Validators.minLength(1)])],
'address':[false,Validators.compose([Validators.minLength(1)])],
'locality':[null, Validators.compose([Validators.required])],
'county':[null,Validators.compose([Validators.required])],
'country':[null,Validators.compose([Validators.required])]
})
}
Run Code Online (Sandbox Code Playgroud) 我正在CakePHP中创建一个网站,我对它有点新意.我找不到这方面的好资源,所以你去了:
我有注册用户三个表结构:Users,Addresses和Contacts.我必须使用所有三个表的信息构建一个视图,如:
Full Name: [ ] (from Users) Shipping Address: [ ] (from Address) Mobile Phone: [ ] (from Contact) e-Mail Address: [ ] (from Contact)
处理这种情况的最佳方法是什么?特别是为了储蓄.创建一个新模型来表示这个,它将拥有一个save()方法本身(也许是数据库中的sql视图)创建一个Controller来处理这个视图的binds或unbinds信息
我仍然想知道我将如何处理两个联系人,因为他们将是两个不同INSERT的联系人
我可以挖掘的任何暗示或资源都会很高兴.
我将一些参数传递给ModelDriven<Transporter>通过查询字符串实现的动作类.
<s:form namespace="/admin_side" action="Test" id="dataForm" name="dataForm">
<s:url id="editURL" action="EditTest" escapeAmp="false">
<s:param name="transporterId" value="1"/>
<s:param name="transporterName" value="'DHL'"/>
</s:url>
<s:a href="%{editURL}">Click</s:a>
</s:form>
Run Code Online (Sandbox Code Playgroud)
动作类如下.
@Namespace("/admin_side")
@ResultPath("/WEB-INF/content")
@ParentPackage(value = "struts-default")
public final class TestAction extends ActionSupport
implements Serializable, Preparable, ModelDriven<Transporter>
{
private static final long serialVersionUID = 1L;
private Transporter transporter = new Transporter();
@Action(value = "Test",
results = {
@Result(name = ActionSupport.SUCCESS, location = "Test.jsp"),
@Result(name = ActionSupport.INPUT, location = "Test.jsp")},
interceptorRefs = {
@InterceptorRef(value = "paramsPrepareParamsStack",
params = {"params.acceptParamNames", "transporterId, …Run Code Online (Sandbox Code Playgroud) java model-driven struts2 interceptorstack struts2-interceptors
我正在将一个 Struts 1 应用程序迁移到 Struts2 并尝试最小化所需的代码更改。
我需要知道如何访问ActionFormStruts2Action类中的 。下面是我当前的代码,我在尝试访问ActionForm.
Public class DeptBuildingNewAction extends ActionSupport
implements ServletRequestAware, ServletResponseAware, ModelDriven<DeptBuidingFormBean> {
private HttpServletRequest request;
private HttpServletResponse response;
private DeptBuidingFormBean form;
public void setServletRequest(HttpServletRequest httpServletRequest) {
this.request = httpServletRequest;
}
public void setServletResponse(HttpServletResponse httpServletResponse) {
log.debug("Inside setServletResponse");
this.response = httpServletResponse;
}
public DeptBuidingFormBean getModel() {
log.debug("Inside getForm");
return form;
}
public void setModel(DeptBuidingFormBean form) {
log.debug("Inside setForm");
this.form = form;
}
Run Code Online (Sandbox Code Playgroud)
到达ActionForm这里的最佳方式是什么?
符号执行和模型检查之间有什么区别(例如在模型转换中)?我不明白他们的区别.它们是一样的吗?!
我想在Angular2的输入字段中添加一个数字管道.我正在使用模型驱动的表单,我的所有输入都有一个formControlName而不是使用数据绑定.我formControlName="number | number : '1.2-2'"遇到的问题是无效的代码.它抛出一个错误,说找不到formControlName.我不想删除formControlName来代替ngModel,因为我正在订阅表单输入以在使用表单时进行验证.
我知道有很多问题可以解决这个特殊的错误,但在尝试了这些解决方案的组合后,没有人倾向于帮助这个包.
ng2-mdf-validation-messages - https://www.npmjs.com/package/ng2-mdf-validation-messages
在GitHub上还有一个问题仍然存在 - https://github.com/d-kostov-dev/ng2-mdf-validation-messages/issues/12
针对不同软件包的各种解决方案提到了导出函数并将其包含在内,useFactory但我没有得到为这个特定软件包编写的内容.
例如:
import { Ng2MDFValidationMessagesModule } from 'ng2-mdf-validation-messages';
export function Ng2MDFValidationMessagesModuleFactory() {
return Ng2MDFValidationMessagesModule.globalConfig({
class: 'text-danger',
defaultErrorMessages: {
required: 'Default Custom Required Message'
}
});
}
@NgModule({
...
providers: [
{
provide: Ng2MDFValidationMessagesModule,
useFactory: Ng2MDFValidationMessagesModuleFactory
}
],
})
Run Code Online (Sandbox Code Playgroud)
如果尝试使用创建的全新应用程序,它仍会出现错误ng.
编辑任何文件并保存后解决错误,之后一切正常,但不是第一次.
使用Angular 4和此插件添加带有全新安装的示例代码.
可在以下网址获得 - https://github.com/kunaldethe/ng4-mdf-validation-messages-example
组态:
1. node -v (v6.11.0)
2. npm -v (5.4.2)
3. ng --version
@angular/cli: 1.4.9
node: 6.11.0
os: win32 x64
@angular/animations: 4.4.6
@angular/common: …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个Model-Driven Angular template应该注册新用户的。为此,我创建了 2 个主要用途的文件:
admin-register.component.html admin-register-form.component.ts
尝试转到显示注册表单的页面时,我在控制台中得到以下信息
ERROR TypeError: Cannot read property 'valid' of undefined
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
TIA
admin-register.component.html
<div class="container">
<div class="row">
<div class="col"></div>
<div class="col-md-8 ">
<form [formGroup]="userForm" (ngSubmit)="onSubmit()" >
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<!-- set up first name -->
<div class="form-group">
<div class="input">
<label>First Name</label>
<input type="text" id="firstname" formControlName="firstname" class="form-control input-lg" name="firstname" tabindex="1" />
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<!-- set up last name -->
<div class="form-group">
<div class="input">
<label>Last …Run Code Online (Sandbox Code Playgroud) 我把println()每个方法都放在Action类中.
public String execute() throws Exception {
System.out.println("execute");
//...
}
public void prepare() throws Exception {
System.out.println("prepare");
//...
}
public Object getModel() {
System.out.print("getModel");
//...
}
Run Code Online (Sandbox Code Playgroud)
我以为订单会是; 准备→执行→getModel.
因为我记得我在书中读过它,所以我习惯构造bean类并做一些逻辑prepare(),然后返回SUCCESS execute().我认为getModel用于将bean推送到valueStack,对吧?
......无论如何,控制台告诉我这个.这很奇怪; 准备→getModel→执行.
这对我来说是一个巨大的问题.用英语解释原因很难......但我会试试!
我曾经创建过处理相同bean的每个动作类,当然每个动作类中都有相同的代码(变量,它们的getter和setter).
现在我正在尝试创建一个操作来避免重复.这个动作类有几个方法(像这样在struts.xml中映射; <action name="View_board" method="view">).
正如我们在控制台中看到的那样,view()在动作类的最后一个调用它execute().该prepare()不会只是构建豆和view()做真正的就业机会.但是getModel()在调用之前调用view(),所以没有机会将bean放到ValueStack.
我希望你们明白我要解释的是什么.
总结一下,每个动作类都像BoardView,BoardDelete,BoardWrite ......它们运作良好!但我讨厌那些重复的东西,所以我创建了BoardManager类.这个类有每个方法(比如view())由类处理(比如BoardView).但是这个view()是在调用之后调用的getModel(),所以bean(return of getModel())没有机会被推送到ValueStack.
请帮帮我.教我你在这个领域的专业知识.我正在自己开发这一切,这让我感觉很难受.
谢谢!!
model-driven ×13
struts2 ×5
angular ×4
validation ×3
java ×2
actionform ×1
ajax ×1
angularjs ×1
cakephp ×1
cakephp-1.2 ×1
jquery ×1
paradigms ×1
typescript ×1
verification ×1