注意:在获得更多使用Angular和Java的经验之后,我正在修改这篇文章。这是为了避免发布新问题。

在过去的几个月中,与不同的模型一起在JSP代码中实现可重用的AngularJS部件,最终决定使用jsp include指令<%@include file="form-part.jsp" %>。这很好用,现在唯一的问题是使用C Tags时的可读性问题。

例如,变量在Eclipse资源文件中的定义如下:

资源文件(.properties):

formhtml5.jsp.photoSubjectFront=Subject Front
formhtml5.jsp.photoSubjectStreet=Subject Street
formhtml5.jsp.photoSubjectRear=Subject Rear


然后,为了在Angular中使用上述变量,我发现的一种方法如下(因为必须在JSP文件中使用变量名):

JSP文件中的HTML

<fmt:message key="formhtml5.jsp.photoSubjectFront" scope="request" var="photoSubjectFront"/>
<fmt:message key="formhtml5.jsp.photoSubjectStreet" scope="request" var="photoSubjectStreet"/>
<fmt:message key="formhtml5.jsp.photoSubjectRear" scope="request" var="photoSubjectRear"/>
...
...
<div class="photos-container"
    ng-init="subjectPhotos =
                            [{fieldName:'subject_front',
                              title:'${photoSubjectFront}'},
                             {fieldName: 'subject_street',
                              title: '${photoSubjectStreet}'},
                             {fieldName: ''subject_rear,
                              title: '${photoSubjectRear}'}
                            ]">
...
...
</div>


如果您注意到,上面的HTML代码块不是很可读。

初始化数组subjectPhotos范围变量并在初始化中使用JSP变量${photoSubjectFront}的最佳方法是什么?

我在想是否可以在更具可读性的<script>块中执行此操作,但是我不确定是否可以在常规脚本块中访问scope变量。

感谢您的反馈。

旧帖子:

在过去的3-4个月中,我一直在使用Angular开发基于表单的应用程序。我正准备进入下一阶段,以便可以将开发的表单(HTML5 + Script)转换为可重用的组件。开发是使用Eclipse,Java(JSP + Servlets),当然还有HTML5,JavaScript(Angular)和CSS完成的。

过去,我已经使用ASP.NET,母版页和用户控件成功地做到了这一点。

我正在寻找一种为HTML5和代码创建模块化且可重复使用的表单部件的方法,以便它们可以轻松地以另一种具有相同部件的形式重用,而布局和逻辑可能会稍作更改。

我目前正在这样做,但仅用于代码。我设法开发了Angular指令,服务和控制器,它们实际上在我对可重用性的期望方面达到了我的期望。现在唯一的问题是如何使HTML5(布局)也可重用。

我已经做了一些研究,可以列出一些选择:


使用基于Java的框架,该框架类似于ASP.NET母版页的框架。我找到了几种选择。
使用Angular指令和模板。这里的问题是,您必须组成一个很长的字符串来表示HTML部分。它认为这令人困惑。我希望有一种方法可以将可重用的HTML部分保存在单独的文件中,并将其包含在指令中或类似的内容中。
使用JSP开发可重用部分,并将其包含在主要形式中。我可以使用jsp include指令<%@include file="form-part.jsp" %>来包含可重用的表单部分。


我正在评估选择最合适的选项的可能性。

希望您能为我提供一些示例或教程,以帮助我达到此要求。

注意:我发现良好的tutorial将会是一个很好的开始。

感谢您的反馈。

塔雷克

最佳答案

开发可重用表单的最佳方法是使用html templateUrl的指令。
您可能正在使用“模板”功能

return {
            replace: true,
            templateUrl: 'some_form_template.html',
            // template: '<div>Hello World</div>'
}


在使用特殊验证时,您还可以使用指令来创建验证:http://ng-learn.org/2014/02/Writing_Custom_Validitions/

当涉及标记错误时,请使用ng-messages / ng-message指令:https://docs.angularjs.org/api/ngMessages/directive/ngMessages

这个问题已经被提出:How to create a angular input directive that works with form validation

10-08 08:17
查看更多