在 Struts2 中实现

2023-12-09

我目前正在处理一个项目,我的应用程序中有多个选择框,每个值应根据第一个列表中选择的先前值进行更改,这是我的代码,我没有获得第二个选择列表。

这是我的jsp。

<s:form id="onSelectList" action="#"> 
  <s:hidden id="c_country" name="buildingName" value="%{bean.building}"></s:hidden>
  <s:hidden id="s_state" name="blockName" value="%{bean.block}"></s:hidden>  
</s:form> 

<s:hidden name="hospitalFloor.buildingName" id="c_country" ></s:hidden>             

<s:url id="loadbuildingurl" action="loadbuildingforFloor"/>
<s:url id="loadstateurl" action="loadblockForFloor"/> 

<s:url id="loadbuildingurl" action="loadbuildingforFloor"/>
<s:url id="loadstateurl" action="loadblockForFloor"/>

<textarea maxlength="200" name="hospitalBlock.blockDescription" id="blockDescription"></textarea> 
<label class="tasks" style="vertical-align:top;"> Select Building :</label>

<sj:select tabindex="10" 
           id="docform_country"
           cssClass="form-control input-sm"
           href="%{loadbuildingurl}"
           name="bean.country"
           list="building"
           onchange="loadValue();"
           onSuccessTopics="s_countryList,s_countryList1"
           onChangeTopics="c_countryList,c_countryList1"
           deferredLoading="false"
           headerKey="-1"
           headerValue="select"
           value="%{bean.country}">
</sj:select>

<label class="tasks" style="vertical-align:top;"> Block :</label>

<sj:select tabindex="10"
           id="docform_state"
           cssClass="form-control input-sm"
           href="%{loadstateurl}"
           name="bean.state"
           list="block"
           formIds="onSelectList"
           onchange="loadValue();"
           onSuccessTopics="s_stateList,s_stateList1"
           onChangeTopics="c_stateList,c_stateList1"
           reloadTopics="c_countryList"
           deferredLoading="false"
           headerKey="-1"
           headerValue="select"
           value="%{bean.state}">
 </sj:select>

这是我的struts.xml。

<action name="loadbuildingforFloor" class="hart.hospitalManagement.HospitalBuildingListForFloorAction">
    <result name="success" type="json"></result>                                    
</action>

<action name="loadblockForFloor" class="hart.hospitalManagement.HospitalBlockListForFloorAction" >
    <result name="success" type="json"></result>
</action>

这是我的第二个选定列表的 java 操作类。

package hart.hospitalManagement;

import hart.bean.HospitalFloor;
import hart.profilemanagement.DoctorRegistrationHelper;

import java.util.Map;

import com.opensymphony.xwork2.ActionSupport;

public class HospitalBlockListForFloorAction extends ActionSupport {

    private Map<String, String> block;
    private String buildingName;
    private HospitalFloor hospitalfloor;

    public Map<String, String> getBlock() {
        return block;
    }
    public void setBlock(Map<String, String> block) {
        this.block = block;
    }
    public String getBuildingName() {
        return buildingName;
    }
    public void setBuildingName(String buildingName) {
        this.buildingName = buildingName;
    }       

    public String setBlockListForFloor()
    {    
        HospitalFloorManagementHelper hospitalFloorManagementHelper=new HospitalFloorManagementHelper();
        block=hospitalFloorManagementHelper.getBlockListForFloor(buildingName);
        System.out.println("building Name are"+buildingName);
        System.out.println("block list are"+block);
        return SUCCESS;
    }
    public String getJSON()
    {
        return setBlockListForFloor();
    }    
}

这是辅助类。

public Map<String, String> getBlockListForFloor(String buildingName)
{
    int buildingId=0;
    Map<String, String> block=new HashMap<>();
    DbConnect db=new DbConnect();
    Connection con=db.returnConnection();

    try
    {
        Statement stmt1=con.createStatement();
        Statement stmt2=con.createStatement();
        ResultSet rs1=stmt1.executeQuery("select buildingId from hospital_building where buildingName='"+buildingName+"'");
        while(rs1.next())
        {
            buildingId=rs1.getInt("buildingId");

        }
        ResultSet rs2=stmt2.executeQuery("select blockName from hospital_block where buildingId='"+buildingId+"'");
        while(rs2.next())
        {
            block.put(rs1.getString("blockName"), rs1.getString("blockName"));
        }               
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    finally
    {
        db.closeConnection(con);
    }

    return block;
}
}

这是 Bean 类。

private String buildingName;
private String block;

public String getBuildingName() {
    return buildingName;
}
public void setBuildingName(String buildingName) {
    this.buildingName = buildingName;
}

但我无法获得第二个选定的列表,请问有人可以帮助我吗?我是struts2的新手。


您的代码中有一个巨大的混乱。请记住:

  1. 每个私有属性都需要一个 Getter 和一个 Setter(在某些情况下可以避免它们,但除非您确切知道自己在做什么,否则总是生成它们);具体来说,block在你的豆子里和hospitalfloor在你的行动中缺少他们。
  2. 我没有看到你的bean属性定义在任何地方,而在 JSP 页面中您多次引用它(bean.state, bean.country etc).
  3. 如果您需要发布某些内容(并且由于您要发布 select1 中的值来填充 select2,因此您需要它),则必须将元素放入表单中。在具体情况下<sj:select/>,不要放一个action表单本身中的属性,因为您已经从href的属性<sj:select/>s:

    <s:form>
         <!-- stuff -->
         <sj:select ... />
         <!-- stuff -->
         <sj:select ... />
         <!-- stuff -->
    </s:form> 
    
  4. 您的主题没有在任何地方定义
  5. 您的第二个选择主题将递归地通知第一个选择。这是错误的。

流程应该是:

    <sj:select name = "bean.country" 
               list = "countries" 
            listKey = "id"
          listValue = "description"
               href = "%{loadCountriesAction}"
              value = "%{bean.country}"
     onChangeTopics = "reloadState" 
   onCompleteTopics = "reloadState" />

    <sj:select name = "bean.state" 
               list = "states" 
            listKey = "id"
          listValue = "description"
               href = "%{loadStatesAction}"
              value = "%{bean.state}" 
       reloadTopics = "reloadState" 
    deferredLoading = "true" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Struts2 中实现 的相关文章

随机推荐

  • 将 C# 语句体 lambda 转换为 VB

    VS8 中的 VB 似乎不支持 转换带有语句主体的 lambda 表达式 我在 C 应用程序中使用它们 但现在必须将其转换为 VB 我正在动态创建一大堆控件 并且我希望能够动态地为它们提供事件处理程序 这样我就可以从数据库构建动态用户界面
  • 从已安装的@types导入?

    我已经安装了md5 也尝试过blueimp md5 包含相应类型的包 如下所示 nmp install save md5 types md5 nmp install save blueimp md5 types blueimp md5 当我
  • 根据 LINQ to SQL 中的变量选择列

    我在我的应用程序中使用 C 中的 LINQ to SQL 我需要能够根据变量选择一行的一列 这对于行来说很容易 因为它是一个简单的 where 子句 但我对仅选择特定列感到不知所措 到目前为止 这是我的代码 var permissions
  • Promise 是如何构建的?

    我想查看 JavaScript Promise 的源代码 我尝试过toSource 但它仍然只是显示 Promise native code 有什么办法可以看到本机代码吗 Promise 内置于 V8 Javascript 解释器中 并部分
  • 当用户不在该选项卡中时,隐藏闪亮应用程序中的选项卡。或者停用它

    我有下面闪亮的仪表板 我已经制作了列的单元格Species交互方式是 如果用户单击该列中的某个单词 例如 setosa 则会移动到选项卡Species 这是某人可以移动到此选项卡的唯一方法 问题是我不想要该选项卡Species当用户不在该选
  • 使用 JQuery 选中父列表项中的复选框?

    我对 Javascript 和 JQuery 是全新的 所以我一直在阅读它 并尝试在检查其中一个子项时检查 并设置为非活动状态 父列表项中的复选框 如果这没有任何意义 请查看列表结构 ul li li ul
  • 如何强制单向对多关系持续存在

    当一对多关系没有逆时 核心数据就会出现问题 对相关属性所做的更改不会保留 这是我们许多人都面临的问题 因为它可以通过谷歌搜索找到 这是想问 除了明显的答案或添加反向关系之外 你们中的一些人是否找到了实现持久性的技巧 解决方法 背景 即使文档
  • CMake 找不到 Visual C++ 编译器

    安装 Visual Studio 2015 并在以前的项目上运行 CMake 后 CMake 错误指出找不到 C 编译器 The C compiler identification is unknown The CXX compiler i
  • 如何修改Eclipse IDE中的键盘快捷键?

    Title more or less says it all Specifically I ve become increasingly annoyed that in order to run an ant script I have t
  • 在哪里可以找到 Python 类?

    我在哪里可以找到类似类的文档object or dict 我想知道他们有哪些方法以及哪些属性 我找到了大部分东西http docs python org 2但我找不到类的方法和属性object 如需详细文档 请访问在线文档 pydoc服务器
  • 在 C# 插件中调用 Dynamics Web API

    我在 Microsoft Dynamics 中有一个业务流程来处理新客户端的创建 当该过程完成时 我将附加一个工作流程 该工作流程会启动一个调用插件来执行一些自定义处理的操作 我正在关注this文章来设置这个过程 在我的插件中 我调用了 D
  • Sublime Text 3 html 自动补全无法正常工作

    我正在尝试使用 sublimetext3 来编辑 html If I do ul选项卡 然后它生成 ul ul 如果我做ul temp选项卡 然后它生成 ul class temp ul 然而 当我尝试时ul gt li temp选项卡 它
  • 寻找相近浮点数之间的“离散”差异

    假设我有两个浮点数 x and y 他们的价值观非常接近 计算机上可以表示离散数量的浮点数 因此我们可以按升序枚举它们 f 1 f 2 f 3 我希望找到距离x and y在此列表中 即它们是 1 2 3 还是n离散步骤分开 是否可以仅使用
  • 如何在android中的两个选项卡之间传递值

    我已经按照 android tab host 的教程进行操作 并且能够在模拟器上运行 现在我想做的只是在一个选项卡视图中实现一个文本框和按钮 一旦用户在文本框中输入并按下按钮 文本框中输入的值就应传递到第二个选项卡 我可以使用该值进行进一步
  • Xcode 8 二进制文件未在 itunesconnect 上显示以供审核

    我已经从 Xcode 8 制作了二进制文件并通过 Application Loader 3 6 上传到 App Store 也提交成功并弹出 但是二进制文件没有在 iTunesConnect 中显示 因为它超过了 19 小时 但它没有在 i
  • 斐波那契函数的问题。 C++

    应该返回n数组的位置 但我只得到 0 而不是值 int fibonacci int n int f 100 f 0 0 f 1 1 for int i 2 i
  • 拉取 microsoft/nanoserver 容器时出现错误“Failed to OpenForBackup failed in Win32”

    尝试提取 microsoft nanoserver 映像时遇到以下错误 下载成功 提取图像期间会出现此错误 482ab31872a2 下载完成 注册层失败 重新执行错误 退出状态 1 输出 无法 OpenForBackup 在 Win32
  • 现有对象的向量

    我有一些对象 在本例中它们是向量 我希望它们存储在向量中 但不知道如何正确声明它 我的代码是 vector
  • 控制 WinForms 中的嵌套限制

    我正在运行时创建表单的控件 出于某种原因 我需要深度超过 49 个嵌套控件 即控件包含在另一个控件中 但出现以下错误 如何添加更多相互嵌套的控件 这是一段可能会重现该错误的代码 public partial class Form1 Form
  • 在 Struts2 中实现

    我目前正在处理一个项目 我的应用程序中有多个选择框 每个值应根据第一个列表中选择的先前值进行更改 这是我的代码 我没有获得第二个选择列表 这是我的jsp