GVKun编程网logo

ajax – 如何在JSF 2.0中使用表单重新呈现页面的一部分?(js表单重置)

10

本文将分享ajax–如何在JSF2.0中使用表单重新呈现页面的一部分?的详细内容,并且还将对js表单重置进行详尽解释,此外,我们还将为大家带来关于(jquery)关闭整个屏幕并突出显示页面的一部分?、

本文将分享ajax – 如何在JSF 2.0中使用表单重新呈现页面的一部分?的详细内容,并且还将对js表单重置进行详尽解释,此外,我们还将为大家带来关于(jquery)关闭整个屏幕并突出显示页面的一部分?、ajax – 在jQuery中提取HTML文档的一部分、asp.net – 在窗口调整大小或在标签之间切换之前,IE7不会呈现页面的一部分、css – 如何仅打印页面的一部分?的相关知识,希望对你有所帮助。

本文目录一览:

ajax – 如何在JSF 2.0中使用表单重新呈现页面的一部分?(js表单重置)

ajax – 如何在JSF 2.0中使用表单重新呈现页面的一部分?(js表单重置)

目前我们正试图从JSF 1.2迁移到JSF 2.0,我们面临的一个问题是,不可能重新呈现包含表单的页面的一部分.像这样(重新渲染outerDiv或形成自己):
<h:panelGroup id="outerDiv">
    <h:form id="form1">...</h:form>
    <h:form id="form2">...</h:form>
</h:panelGroup>

我的意思是,如果我更新outerDiv,所有内容都会更新,但表单(或表单)本身会被破坏并且行为异常,至少ajax调用要么在第一次触发时不起作用,要么不是调用某些bean的方法而是创建新的实例bean并没有做任何事情(无论是在每次通话中销毁先前还是在第一次通话时创建新的,然后什么都不做).只需重新渲染表单内的组件就可以解决这个问题,比如这样(更新innerDiv1和innerDiv2):

<h:panelGroup id="outerDiv">
   <h:form id="form1">
       <h:panelGroup id="innerDiv1">...</h:panelGroup>
   </h:form>
   <h:form id="form2">
       <h:panelGroup id="innerDiv2">...</h:panelGroup>
   </h:form>
</h:panelGroup>

但是我们有很多地方我们用ui包含了一些页面:include并且查看那个页面并在那里更新某些组件并不是很方便.此外,我们将不得不修改所有这些页面,因为它们中的许多页面在表单内部没有共同的包装div,并且单独更新每个组件将非常麻烦且容易出错.
那么,是否有可能使JSF 2.0正确地更新页面的一部分,就像在JSF 1.2中一样?

编辑:看起来表单渲染的问题是richfaces 4.2问题,因为我使用a4j:ajax(a4j的后继:与richfaces 3.3.3一起使用的支持)和基于rich:commandButton的自定义按钮.当我用原生jsf的f替换它们时:ajax表单似乎正确刷新.但外部div的问题仍然存在

解决方法

这与部分状态保存有关.如果你ajax更新一个组件,而该组件又包含一个表单作为其子项之一,那么它的视图状态将会丢失.该表单中的每个第一个ajax请求都将失败,因为没有视图状态.但是,如果该ajax请求重新呈现表单本身,那么它将起作用.

要解决此问题,只要从另一个表单调用,就需要在outerDiv旁边的ajax render / update属性中显式包含其他表单的ID.

例如.

<h:form>
    <h:commandButton value="Update other forms">
        <f:ajax render="outerDiv form1 form2" />
    </h:commandButton>
</h:form>
<h:panelGroup id="outerDiv">
    <h:form id="form1">...</h:form>
    <h:form id="form2">...</h:form>
</h:panelGroup>

不,这不会导致重复组件的ajax响应.它只会触发JSF准备并保存其他表单的状态.

也可以看看:

> Communication in JSF 2.0 – Ajax rendering of content which contains another form

(jquery)关闭整个屏幕并突出显示页面的一部分?

(jquery)关闭整个屏幕并突出显示页面的一部分?

按照下面的截图。我很确定有人以前做过这个! =)

这个圈子是一个奖金,会很高兴一个解决方案,允许突出显示一个给定的“div”

解决方法

See example of the following here →

不需要插件这可以用很少的jQuery代码来实现,在z指数上面显示一个与选定的div的停电覆盖图:

$('.expose').click(function(e){
    $(this).css('z-index','99999');
    $('#overlay').fadeIn(300);
});

$('#overlay').click(function(e){
    $('#overlay').fadeOut(300,function(){
        $('.expose').css('z-index','1');
    });
});

根据以下HTML& CSS …只需将暴露类添加到您想要单击的任何元素:

<div>Some content</div>
<textarea>Some content</textarea><br />
<input type="text"value="Some content" /><br />
<div id="overlay"></div>

.expose {
    position:relative;
}

#overlay {
    background:rgba(0,0.3);
    display:none;
    width:100%; height:100%;
    position:absolute; top:0; left:0; z-index:99998;
}

See example →

ajax – 在jQuery中提取HTML文档的一部分

ajax – 在jQuery中提取HTML文档的一部分

我想对一个HTML返回页面进行AJAX调用,提取HTML的一部分(使用jQuery选择器),然后在我的基于jQuery的JavaScript中使用该部分。

AJAX retrieval很简单。这给我在回调函数的“data”参数中的整个HTML文档。

我不明白是如何以有用的方式处理这些数据。我想把它包装在一个新的jQuery对象,然后使用一个选择器(通过find()我相信)得到只是我想要的部分。一旦我有了,我会把它传递给另一个JavaScript对象插入到我的文档。 (这个代理是为什么我不使用jQuery.load()在第一位)。

我看到的get()示例似乎都是这样的变体:

$('.result').html(data);

…如果我正确理解它,将整个返回的文档插入到选定的元素。不仅是可疑的(这不插入< head>等?),但它太粗糙的我想要的。

对于其他方法的建议是最受欢迎的。

您可以使用标准选择器语法,并将数据作为选择器的上下文传递。第二个参数,在这种情况下的数据,是我们的上下文。
$.post("getstuff.PHP",function(data){
  var mainDiv = $("#mainDiv",data); // finds <div id='mainDiv'>...</div>
},"html");

这相当于做:

$(data).find("#mainDiv");

根据你如何计划使用这个,$ .load()可能是一个更好的路由,因为它允许一个URL和一个选择器过滤结果数据,这是直接传递到元素的方法被调用上:

$("#mylocaldiv").load("getstuff.PHP #mainDiv");

这将加载< div id ='mainDiv'> …< / div>在getstuff.PHP中加入我们的本地网页元素< div id ='mylocaldiv'> …< / div&gt ;.

asp.net – 在窗口调整大小或在标签之间切换之前,IE7不会呈现页面的一部分

asp.net – 在窗口调整大小或在标签之间切换之前,IE7不会呈现页面的一部分

我有IE7的问题.

我有一个固定的布局,用于保持标题和侧面板固定在页面上,只留下“主要内容”区域开关可以愉快地滚动它的内容.

layout on Twitpic http://twitpic.com/show/thumb/e32q7.png

这种布局对于IE6和IE8非常适用,但有时一页可能会“隐藏”应该在“主要内容”区域中显示的内容.

页面完成加载就好了.一瞬间IE7将渲染主要内容就好了,然后它会立即将其隐藏在视图中…某处…当有足够的内容强制“主要内容”区域时,它似乎只会遇到此问题滚动.

通过调整窗口大小或切换到另一个打开的选项卡再返回将导致IE7按预期显示页面.

请注意,兼容模式下IE8会出现同样的问题,但在IE8模式下页面会正确呈现.

如果需要,我可以附加我使用的基本CSS样式,但我首先想看看这是否是IE7的已知问题.

IE7是否存在定位布局和溢出滚动的问题,有时会忘记完全正确渲染页面,直到某些窗口重绘事件强制完成渲染?

请记住,这个完全相同的布局用于站点中的多个页面,因为它是在母版页中设置的.它只是(在这种情况下)一个页面遇到了这个问题.

具有完全相同布局的其他页面可以正确呈现.即使主要内容足够滚动也是如此.

更新:A related question此时没有答案.

最新更新:添加示例母版页和CSS

请注意,相同的布局对于应用程序中的所有页面都是相同的. IE7的问题只发生在一个这样的页面上.所有其他页面都可以在IE7中正确呈现.只有一个页面使用完全相同的布局,它有时会隐藏“工作空间”div中的内容.

母版页

<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="shared_templates_MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
  <link rel="Stylesheet" type="text/css" href="~/common/yui/2.7.0/build/reset-fonts/reset-fonts.css" runat="server" />
  <link rel="Stylesheet" type="text/css" href="~/shared/css/layout.css" runat="server" />
  <asp:ContentPlaceHolder ID="head" runat="server" />
</head>
<body>
  <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
  <div id="app-header">
  </div>
  <div id="side-panel">
  </div>
  <div id="work-space">
    <asp:ContentPlaceHolder ID="WorkSpaceContentPlaceHolder" runat="server" />
  </div>
  <div id="status-bar">
    <asp:ContentPlaceHolder ID="StatusBarContentPlaceHolder" runat="server" />
  </div>
  </form>
</body>
</html>

layout.css

html {
    overflow: hidden;
}

body {
    overflow: hidden;
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    background-color: white;
}

body,table,td,th,select,textarea,input {
  font-family: Tahoma,Arial,Sans-Serif;
  font-size: 9pt;
}

p {
  padding-left: 1em;
  margin-bottom: 1em;
}

#app-header {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 80px;
  background-color: #dcdcdc;
  border-bottom: solid 4px #000;
}

#side-panel {
  position: absolute;
  top: 84px;
  left: 0px;
  bottom: 0px;
  overflow: auto;
  padding: 0;
  margin: 0;
  width: 227px;
  background-color: #AABCCA;
  border-right: solid 1px black;
  background-repeat: repeat-x;
  padding-top: 5px;
}

#work-space {
    position: absolute;
    top: 84px;
    left: 232px;
    right: 0px;
    padding: 0;
    margin: 0;
    bottom: 22px;
    overflow: auto;
    background-color: White;
}

#status-bar {
  position: absolute;
  height: 20px;
  left: 228px;
  right: 0px;
  padding: 0;
  margin: 0;
  bottom: 0px;
  border-top: solid 1px #c0c0c0;
  background-color: #f0f0f0;
}

Default.aspx

<%@ Page Title="Test" Language="VB" MasterPageFile="~/shared/templates/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<asp:Content ID="WorkspaceContent" ContentPlaceHolderID="WorkSpaceContentPlaceHolder" Runat="Server">
  Workspace
  <asp:ListView ID="DemoListView" runat="server"
                DataSourceID="DemoObjectDataSource"
                ItemPlaceholderID="DemoPlaceHolder">
    <LayoutTemplate>
      <table>
        <colgroup>
          <col width="80" />
          <col />
          <col width="80" />
          <col width="120" />
        </colgroup>
        <tbody>
          <asp:PlaceHolder ID="DemoPlaceHolder" runat="server" />
        </tbody>
      </table>
    </LayoutTemplate>
    <ItemTemplate>
      <tr>
        <th><%#Eval("ID")%></th>
        <td><%#Eval("Name")%></td>
        <td><%#Eval("Size")%></td>
        <td><%#Eval("CreatedOn","{0:yyyy-MM-dd HH:mm:ss}")%></td>
      </tr>
    </ItemTemplate>
  </asp:ListView>

  <asp:ObjectDataSource ID="DemoObjectDataSource" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="DemoLogic">
    <SelectParameters>
      <asp:Parameter Name="path" Type="String" />
    </SelectParameters>
  </asp:ObjectDataSource>
</asp:Content>

<asp:Content ID="StatusContent" ContentPlaceHolderID="StatusBarContentPlaceHolder" Runat="Server">
  Ready OK.
</asp:Content>

解决方法

一个理论:

你的CSS是在主要内容区域之后声明的(这导致所谓的“无格式内容的闪现”),并且在你的CSS中有一个IE7错误(可能是peekaboo bug)导致内容被隐藏.

尝试添加:

position: relative;
min-width: 0;

对于正在消失的内容.

css – 如何仅打印页面的一部分?

css – 如何仅打印页面的一部分?

在用户打印这个巨型表单之前,我试图隐藏一些div,然后再次显示div.因此,我想忽略页面的其余部分,只打印表单本身.

当然,当用户点击打印按钮时,我可以打开一个单独的页面.唯一的事情是,形式真的很长,这样做是相当乏味的.

编辑:我以前的问题并没有反映出我在寻找什么.所以我改为现在.

还要感谢所有建议的window.onbeforeprint和window.onafterprint.这与我编辑的问题相关.

解决方法

IE支持onbeforeprint和onafterprint,但您真正需要的是打印样式表.
<link rel="stylesheet" type="text/css" media="print" href="print.css">

参见:this answer

关于ajax – 如何在JSF 2.0中使用表单重新呈现页面的一部分?js表单重置的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于(jquery)关闭整个屏幕并突出显示页面的一部分?、ajax – 在jQuery中提取HTML文档的一部分、asp.net – 在窗口调整大小或在标签之间切换之前,IE7不会呈现页面的一部分、css – 如何仅打印页面的一部分?等相关知识的信息别忘了在本站进行查找喔。

本文标签: