一步一步做项目(14)功能扩展(考生、科目、县区信息)

一步一步做项目(14)功能扩展(考生、科目、县区信息)

在前面一步一步做项目(11)扩展(管理课程信息)的基础上进行,前面的文章详细介绍了如何添加新功能,这里就不再赘述。
现在,假设你已经按照前面的方法,添加了Examinee、Discipline、CountyDistrict的信息处理,也就是关于这三个实体的增删改查操作。

类图

可以按照下图属性来添加这三个类,也可以少一些属性,没有太大关系,但要注意保持这三个类之间的关系,如图所示:
类图
从这里可以看出,在实体类Examinee中有Discipline和CountyDistrict属性,在配置时就要指明这种关系。

实体类配置

要在实体类映射中标识出上图所示的关系,需要在Examinee.hbm.xml配置文件中添加如下代码:

    <many-to-one name="discipline" class="cn.lut.curiezhang.model.Discipline" fetch="select" cascade="none" lazy="false">
      <column name="DISCIPLINE_ID" length="32">
        <comment>科类</comment>
      </column>
    </many-to-one>
    <many-to-one name="countyDistrict" class="cn.lut.curiezhang.model.CountyDistrict" fetch="select" cascade="none" lazy="false">
      <column name="COUNTY_DISTRICT_ID" length="32">
        <comment>县区代码</comment>
      </column>
    </many-to-one>

这样Examinee就有指向Discipline和CountyDistrict的关系了,就可以在数据库中创建对应的列(属性)来存放相关的信息。

处理用户输入

在添加考生信息时,用户在输入Discipline时,应该提供一个下拉列表框供用户选择,其代码如下:

    <!-- discipline -->
    <div class="form-group">
      <label class="col-sm-6 control-label" for="discipline">
        <s:text name="Examinee.fieldName.discipline"/>&nbsp;<i class="fa fa-arrow-circle-right text-danger"></i>
      </label>
      <div class="col-sm-6">
        <s:select id="discipline" name="discipline.disciplineId"
                  list="disciplineList" listKey="disciplineId" listValue="disciplineName"
                  placeholder="%{getText('Examinee.fieldPrompt.discipline')}"
                  cssClass="selectpicker show-tick" data-width="100%" data-container="body"/>
      </div>
      <div class="col-sm-6">
        <s:fielderror fieldName="discipline" />
      </div>
    </div>
    <!-- /discipline -->

下拉列表框中将从Discipline中查找数据,并列出来,因此,为了能够列出数据,还需要在ExamineeAction中添加相应的处理代码,以便完成检索,其代码如下:

	/**
	 * 搜索所有科类数据时的返回结果
	 */
	private Collection<Discipline> disciplineList;
	public Collection<Discipline> getDisciplineList() {
		log.debug("CEAMSEMS:Action层 > 得到所有数据,disciplinelist");
		disciplineList = disciplineService.getAll();
		return disciplineList;
	}

	/**
	 * Struts和Spring整合过程中按名称自动注入的业务层的类
	 */
	private DisciplineService disciplineService;
	public void setDisciplineService(DisciplineService disciplineService) {
		log.debug("CEAMSEMS:Action层 > 注入disciplineService类");
		this.disciplineService = disciplineService;
	}

这里的disciplineList就是jsp中用到的数据,在这里注入了DisciplineService,同样需要在applicationContext.xml中进行配置,配置代码如下:

	<bean id="examineeAction" class="cn.lut.curiezhang.action.ExamineeAction" scope="prototype">
		<!-- 手动注入Service -->
		<property name="examineeService" ref="examineeService"/>
    <property name="disciplineService" ref="disciplineService"/>
	</bean>

系统添加的科目信息就可以在添加Examinee时进行选择了,科目列表如下:
科目列表
现在,要添加考生信息,就会在科类中列出上面添加的所有的科类信息了,如图所示:
添加考生
对应的browse.jsp、modify.jsp、index.jsp也需要修改,这里就不再赘述,供读者自己练习。
类似地,要处理CountyDistrict相关的信息,同样的方式操作即可。这里不再赘述,供读者自己练习。

发布了42 篇原创文章 · 获赞 15 · 访问量 5866

猜你喜欢

转载自blog.csdn.net/ZhangCurie/article/details/102569364