PeopleSoft HTML区域输入值绑定与PeopleCode捕获指南

PeopleSoft HTML区域输入值绑定与PeopleCode捕获指南

本教程详细探讨了PeopleSoft中HTML区域内输入框的初始值无法被PeopleCode直接捕获的问题。文章解释了其背后的数据模型初始化机制,并提供了一种基于派生记录/字段和HTML对象绑定的解决方案。通过将HTML输入框与PeopleSoft字段关联,确保页面加载时和提交后,PeopleCode都能准确获取并处理这些值,从而避免数据丢失或逻辑错误。

理解PeopleSoft HTML区域输入值捕获机制

在peoplesoft自定义页面中,当开发者在html区域内嵌入一个元素并为其设置value属性以预填充初始值时,peoplecode在首次提交页面时,通常无法通过%request.getparameter直接捕获到这个预设的初始值。然而,一旦页面发生局部回发(例如,通过messagebox触发),该值在随后的提交中便能被正确捕获。

这种现象的根源在于PeopleSoft页面数据模型的初始化方式。当页面首次加载时,HTML区域的内容被视为一个静态字符串在客户端浏览器中渲染。输入框的value属性是这个静态HTML的一部分,但服务器端的PeopleCode数据模型并未自动将其视为一个可直接访问的字段值。只有当客户端发生一次显式的数据回传(例如,用户修改了输入框内容,或者发生了一次局部回发),浏览器才会将所有输入字段的当前状态(包括未修改的预设值)发送回服务器,此时PeopleCode才能捕获到这些值。

解决方案:通过派生记录和HTML对象绑定

为了确保HTML区域内输入框的初始值和用户修改后的值都能被PeopleCode可靠地捕获,最健壮的方法是建立一个服务器端的支持数据模型,即将其绑定到一个PeopleSoft记录字段,通常是派生工作记录(Derived Work Record)上的字段。

1. 创建派生记录和字段

首先,在Application Designer中创建一个新的工作记录(Work Record),或使用现有工作记录。在该记录中添加一个字段,其数据类型和长度应与HTML输入框预期接收的数据类型和最大长度匹配。此字段将作为HTML输入框在PeopleCode中的代理。

示例:

立即学习“前端免费学习笔记(深入)”;

记录名称: DERIVED_WORK字段名称: HTML_INPUT_VALUE (类型: Character, 长度: 13)

2. 定义HTML对象并使用%bind占位符

在Application Designer中创建一个新的HTML对象。将您的HTML输入元素及其样式放入此HTML对象中。关键在于使用%bind(:1)占位符来动态插入字段值,而不是直接在HTML中硬编码value属性。%bind(:1)表示第一个绑定参数。

示例HTML对象 (HTML.MY_INPUT_AREA) 内容:


请注意:name=”drivers_field”属性在此处仍然存在,但对于通过绑定字段捕获值而言,其重要性低于id属性(用于客户端JavaScript操作)和value=”%bind(:1)”。

3. 在PeopleCode中填充HTML区域

在页面的Page Activate事件或任何需要初始化HTML区域值的事件中,使用GetHTMLText函数将HTML对象的内容加载到页面上的HTML区域控件所关联的字段中,并将您希望预填充的PeopleSoft字段的值作为绑定参数传入。

示例PeopleCode (在Page Activate事件中):

/* 声明函数,GetHTMLText通常位于FUNCLIB_HTML.HTML_AREA_FUNCS中 */Declare Function GetHTMLText PeopleCode FUNCLIB_HTML.HTML_AREA_FUNCS Field Formula;/* 假设 DERIVED_WORK.HTML_INPUT_VALUE 是您在步骤1中创建的派生字段 *//* 假设 MY_PAGE_REC.HTML_AREA_FIELD 是页面上HTML区域控件关联的字段 *//* 设置派生字段的初始值。此值可以来自数据库、用户会话或任何PeopleCode可获取的源。 */DERIVED_WORK.HTML_INPUT_VALUE = "R291992929399";/* 使用GetHTMLText将HTML对象内容加载到HTML区域,并绑定派生字段的值。   HTML.MY_INPUT_AREA 是您在步骤2中创建的HTML对象。   DERIVED_WORK.HTML_INPUT_VALUE 作为第一个绑定参数,将替换HTML对象中的 %bind(:1)。*/MY_PAGE_REC.HTML_AREA_FIELD = GetHTMLText(HTML.MY_INPUT_AREA, DERIVED_WORK.HTML_INPUT_VALUE);

4. 访问绑定字段的值

一旦HTML输入框通过%bind与DERIVED_WORK.HTML_INPUT_VALUE关联,并且页面已加载,您就可以在任何后续的PeopleCode事件(如按钮的FieldChange事件、SavePostChange事件等)中直接访问DERIVED_WORK.HTML_INPUT_VALUE来获取用户输入或初始值。无需使用%Request.GetParameter。

示例PeopleCode (在保存按钮的FieldChange事件中):

/* 直接从派生字段获取值,无论用户是否更改过,该字段将始终反映当前UI上的值 */Local String sCurrentValue = DERIVED_WORK.HTML_INPUT_VALUE;If All(sCurrentValue) Then    MessageBox(0, "", 0, 0, "成功捕获到值: " | sCurrentValue);    /* 在这里可以继续您的业务逻辑,例如对值进行验证或保存到数据库 */Else    MessageBox(0, "", 0, 0, "输入值为空。请提供有效信息。");End-If;

注意事项与最佳实践

派生记录的重要性: 派生工作记录(Derived Work Records)是PeopleSoft中处理临时或非持久化页面数据(如用户输入、计算结果)的常用方式。它们不会直接映射到数据库表,非常适合此类UI交互,避免了不必要的数据库操作。避免硬编码: 尽量避免在HTML对象中硬编码初始值。通过%bind机制,可以灵活地从PeopleCode动态设置和获取值,提高代码的可维护性和复用性。服务器端验证: 即使客户端HTML输入框设置了required属性或使用了JavaScript进行客户端验证,也务必在服务器端PeopleCode中进行数据验证,以确保数据完整性和安全性。客户端验证易被绕过。JavaScript交互: 如果需要更复杂的客户端交互(例如,实时验证、动态修改HTML区域内容),可以结合JavaScript。但对于初始值捕获和服务器端值管理,绑定字段的方法更为直接和可靠。%Request.GetParameter的适用场景: %Request.GetParameter主要用于处理通过HTTP POST或GET请求直接发送的参数,尤其是在与外部系统集成或处理非标准表单提交时。对于PeopleSoft内部页面元素,绑定到字段是更推荐且更符合PeopleSoft框架设计的方式。

总结

通过将PeopleSoft HTML区域内的输入框与一个派生记录字段进行绑定,我们能够有效地解决初始值无法被PeopleCode捕获的问题。这种方法不仅提供了清晰的数据模型,确保了服务器端对UI数据的全面控制,还简化了PeopleCode中对这些值的访问,提升了应用程序的健壮性和可维护性。遵循此教程,开发者可以构建更加稳定和可靠的PeopleSoft自定义页面。

以上就是PeopleSoft HTML区域输入值绑定与PeopleCode捕获指南的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1579746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HTML中导入ES模块函数并安全绑定DOM事件的实践
上一篇 2025年12月22日 20:52:52
解决导航链接悬停时布局偏移的CSS教程
下一篇 2025年12月22日 20:53:11

相关推荐

  • 0x80073701错误代码怎么解决 简单几步教会你

    0x80073701错误代码怎么解决 简单几步教会你0x80073701错误代码怎么解决 简单几步教会你0x80073701错误代码怎么解决 简单几步教会你0x80073701错误代码怎么解决 简单几步教会你

    windows更新过程中出现错误代码“0x80073701”是许多用户常遇到的问题。该错误通常会导致系统无法成功安装更新补丁,尤其是在尝试安装功能更新或累积更新时更为明显。此问题的根本原因多为系统关键文件丢失或windows更新组件损坏。本文将深入解析“0x80073701”错误的来源,并提供多种高…

    2026年8月31日 用户投稿
    000
  • 如何解决JWT数据加密问题?使用web-token/jwt-encryption可以!

    在开发一个需要使用JSON Web Token(JWT)进行数据传输的项目时,我遇到了一个棘手的问题:如何确保JWT中的数据在传输过程中是安全的?尝试了多种方法后,我发现web-token/jwt-encryption库能够轻松解决这个问题。 可以通过以下地址学习composer:学习地址 JWT是…

    用户投稿 2026年8月31日
    000
  • 顺丰同城骑士app如何退保证金

    在顺丰同城骑士平台,如果你打算停止接单并申请退还保证金,可以参考以下流程进行操作。 第一步,启动顺丰同城骑士App。登录后,在首页底部的导航栏中找到“我的”入口,点击进入个人账户页面。 进入“我的”页面后,请留意页面中的功能选项,通常会有一个明确标注为“保证金”的功能模块。 点击“保证金”选项,进入…

    2026年8月31日
    000
  • PHP file_get_contents 处理多URL请求的最佳实践

    本教程旨在解决PHP中处理多URL请求时常见的逻辑错误,特别是当从数据库查询结果生成URL并使用file_get_contents访问时。文章将揭示嵌套循环的陷阱,并提供一种高效、直接的迭代处理方法,确保每个URL被正确且仅访问一次,同时探讨性能、错误处理和URL编码等专业实践。 1. 问题背景与常…

    2026年8月31日
    000
  • win11电脑开机出现”PAGE_FAULT_IN_NONPAGED_AREA”

    win11电脑开机出现”PAGE_FAULT_IN_NONPAGED_AREA”win11电脑开机出现”PAGE_FAULT_IN_NONPAGED_AREA”win11电脑开机出现”PAGE_FAULT_IN_NONPAGED_AREA”win11电脑开机出现”PAGE_FAULT_IN_NONPAGED_AREA”

    蓝屏错误“page_fault_in_nonpaged_area”通常由内存访问冲突导致,常见原因及解决步骤如下:1.检查最近的硬件或软件更改,卸载新硬件或回滚驱动程序;2.运行windows内存诊断工具检测内存问题;3.使用磁盘检查工具扫描并修复硬盘错误;4.更新或回滚驱动程序,尤其是显卡驱动;5…

    2026年8月31日 用户投稿
    100
  • 鸿蒙微信新版上线,负责人:目标对齐甚至超越iOS

    近日,鸿蒙微信手机版迎来了重要的功能更新。鸿蒙微信基础功能负责人anqi在接受采访时明确表示:“我们的终极目标是将鸿蒙微信做到与安卓、ios对齐,甚至最终超越ios。” 此次新版聚焦于社交体验的升级,重点完善了多项实用功能:群管理功能得到了优化,支持批量操作和自定义表情;用户可个性化设置“拍一拍”文…

    2026年8月31日
    000
  • 哔哩哔哩大会员专属功能在哪开启_B站会员专属功能开启指南

    开启B站大会员功能需依次设置:一、在“观看偏好”中设定清晰度为1080P+或自适应,开启自动跳过片头片尾及杜比全景声;二、在“隐私权限设置”中关闭个性化广告推荐,并于“播放设置”开启免广告播放;三、在“我的装扮”中领取大会员专属头像框、挂件并使用特效弹幕;四、在“账号与安全”中开启数据同步,实现多端…

    2026年8月31日
    000
  • ​​电脑无法复制粘贴?3种方法轻松解决​​

    电脑无法复制粘贴,这问题确实让人抓狂,它几乎是日常操作的基础。但通常来说,这并非什么大故障,多数时候都是些小毛病在作祟,几招就能搞定。 解决方案 遇到复制粘贴失灵,我的第一反应通常是这几步,屡试不爽: 重启电脑: 这是最简单也最有效的万能药。很多时候,系统内存或后台进程出现临时性紊乱,一个干净的重启…

    2026年8月31日
    000
  • Node.js究竟是什么样的运行环境?

    深入剖析Node.js:JavaScript服务器端运行环境 本文旨在深入浅出地解释Node.js作为JavaScript服务器端运行环境的具体含义,帮助开发者更好地理解这一概念。许多人初学Node.js时,常常对“运行环境”感到困惑。我们将从软件和硬件层面,以及与“运行时”(runtime)的关系…

    2026年8月31日
    000
  • win10重装系统其他盘的东西还在吗win10重装系统其他盘会…

    一、所需工具 在开始重装系统之前,需要准备一些必要的工具。首先,准备一个U盘或光盘,用于制作系统启动盘。另外,建议提前备份其他分区中的重要资料,以防在安装过程中出现意外丢失。 二、解决方法 在重装系统时,可以选择不删除其他分区的数据。安装系统的过程中,系统会询问是否格式化其他分区,我们只需选择不进行…

    2026年8月31日
    100
  • 如何用Flexbox和JavaScript实现父元素内子元素的两行排列及展开显示?

    如何利用Flexbox和JavaScript在一个父元素内实现子元素的两行排列,并支持点击展开显示全部内容? 本文将演示如何使用Flexbox和JavaScript,在一个父容器中将多个子元素排列成两行,初始状态隐藏超出部分,点击按钮后显示所有内容并启用水平滚动条。 关键在于巧妙地结合CSS的Fle…

    2026年8月31日
    000
  • b站视频怎么循环播放_B站视频单曲循环播放设置技巧

    B站视频循环播放可通过三种方式实现:一是使用App内播放器的循环功能,点击进度条右侧循环图标即可;二是通过第三方播放器如VLC导入视频链接并开启循环模式;三是PC端利用浏览器扩展插件如Global Speed,启用Loop Video选项实现自动重播。 如果您希望在观看B站视频时实现循环播放,以便重…

    2026年8月31日
    200
  • Tailwind CSS hocus 变体失效:为什么按钮焦点状态下样式不生效?

    Tailwind CSS hocus 变体失效排查:焦点样式覆盖问题 使用 Tailwind CSS 时,变体(variants)用于控制样式在不同状态下的应用。然而,有时变体可能失效,例如 hocus 变体在按钮获得焦点时样式不生效。本文分析一个实际案例,解释 hocus 变体未能正确应用样式的原…

    2026年8月31日
    200
  • 聊聊flink Table的Group Windows

    本文旨在探讨flink table的group windows。 Table table = input .window([Window w].as(“w”)) // 定义窗口并为其赋予别名 w .groupBy(“w”) // 按窗口 w 分组表 .select(“b.sum”); // 聚合Ta…

    2026年8月31日
    100
  • Vue.js父子组件间图片传递:如何解决子组件无法正确加载父组件图片的问题?

    Vue.js 父子组件间图片传递与加载:高效解决方法 在Vue.js项目中,父子组件间传递图片资源时,经常遇到子组件无法正确加载图片的问题。本文将深入探讨此问题,并提供两种高效的解决方案。 问题描述: 父组件动态传递本地图片到子组件,但子组件无法显示图片,即使使用了require方法导入图片路径。 …

    2026年8月31日
    400
  • Laravel表单类实战指南:快速入门

    随着互联网技术的飞速发展,Web开发已经成为了一个热门的行业。作为Web开发者,掌握流行的开发框架是非常重要的。其中,Laravel是一个备受推崇的PHP开发框架,它提供了一系列强大且易于使用的功能,极大地简化了Web应用的开发流程。在Laravel中,表单是不可或缺的一部分,我们经常需要使用表单从…

    2026年8月31日
    100
  • 如何在Java中使用LinkedHashSet

    LinkedHashSet继承HashSet并保持插入顺序,适用于去重且需顺序的场景。1. 创建时可指定初始容量;2. add()添加元素,自动去重;3. 遍历时按插入顺序输出;4. 支持remove()、contains()等操作;5. 常用于关键词去重、缓存等。注意:允许null、非线程安全。 …

    2026年8月31日
    200
  • 发布 ASP.NET Core 2.x 应用到 Ubuntu

    发布 ASP.NET Core 2.x 应用到 Ubuntu发布 ASP.NET Core 2.x 应用到 Ubuntu发布 ASP.NET Core 2.x 应用到 Ubuntu发布 ASP.NET Core 2.x 应用到 Ubuntu

    将asp.net core 2.x 应用发布到linux(ubuntu)服务器上时,通常采用kestrel作为服务器,因为它是跨平台的且高度优化。kestrel可以直接作为边缘服务器使用,但更推荐将其置于反向代理(如nginx)之后,以实现负载均衡和更好的扩展性。 在这种配置中,HTTPS请求首先到…

    2026年8月31日 用户投稿
    100
  • win10中文家庭版如何修改电脑账户名称?

    一、准备条件: 1. 一台安装了win10中文家庭版的设备 2. 足够的耐心与决心 二、操作步骤: 1. 进入系统“设置”界面,选择“账户”功能。 2. 在左侧菜单中点击“账户”进入相关页面,随后选择“你的信息”。 3. 在当前页面中找到并点击“管理我的Microsoft账户”选项。 4. 系统会跳…

    2026年8月31日
    100
  • Swoole怎么给WebSocket连接设置别名或用户ID

    使用fd与用户ID的映射表可实现Swoole中WebSocket按用户推送消息,通过全局数组或SwooleTable存储fd↔uid对应关系,在用户登录时绑定,断开时解绑,结合Redis支持多进程或多机部署。 在使用 Swoole 开发 WebSocket 服务时,经常需要为每个连接绑定用户 ID …

    2026年8月31日
    500

发表回复

登录后才能评论
关注微信