如果您想了解PrimeFacesinputTextajaxevent=valueChange单击命令按钮后触发和privatesubform_click()单击窗体的知识,那么本篇文章将是您的不二之选
如果您想了解PrimeFaces inputText ajax event = valueChange单击命令按钮后触发和private sub form_click()单击窗体的知识,那么本篇文章将是您的不二之选。我们将深入剖析PrimeFaces inputText ajax event = valueChange单击命令按钮后触发的各个方面,并为您解答private sub form_click()单击窗体的疑在这篇文章中,我们将为您介绍PrimeFaces inputText ajax event = valueChange单击命令按钮后触发的相关知识,同时也会详细的解释private sub form_click()单击窗体的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- PrimeFaces inputText ajax event = valueChange单击命令按钮后触发(private sub form_click()单击窗体)
- ajax – primefaces p:selectBooleanButton监听器未在嵌套的ui:repeat中触发
- Android Material Design控件使用(2)——FloatButton TextInputEditText TextInputLayout 按钮和输入框
- com.facebook.react.uimanager.events.ContentSizeChangeEvent的实例源码
- com.facebook.react.views.textinput.ReactTextInputManager的实例源码
PrimeFaces inputText ajax event = valueChange单击命令按钮后触发(private sub form_click()单击窗体)
使用JSF和PrimeFaces 6.1,我有一个inputText字段,例如:
<p:inputText value="#{backingBean.stringField}"> <p:ajax event="valueChange" update="@form" /></p:inputText>
在同一个表单中是一个commandButton:
<p:commandButton id="btnDoThatThing" ajax="true" immediate="true" update="@form" process="@this" action="#{backingBean.doThatThing}"/>
当我
- 对inputText字段进行更改,
- 然后单击命令按钮以外的其他位置
- 单击命令按钮
一切都按预期工作。但是如果我:
- 对inputText字段进行更改,
- 立即命令按钮
该按钮未触发,因为commandButton的第一次单击触发了valueChange事件在inputText字段中发生。
如果我第二次单击它,按钮动作最终会发生。
现在,如果我按预期的那样将commandButton 更改p:ajax event="valueChange"
为p:ajaxevent="keyup"
第一次单击,则可正常工作,但是不幸的是,inputField上的keyup事件非常hacky,并且您失去了该字段内的功能(复制/粘贴文本,文本选择,“快速”键入等)
)
关于如何在inputText字段中启动change事件,以及当用户在inputText字段中键入后立即单击按钮时,如何触发commandButton动作有任何想法?
谢谢你的时间!
答案1
小编典典首先,您的valueChange
被触发。这将更新 包含
按钮的表单。无法100%确定这是否取决于浏览器,但是在Chromium(Linux)中,不会执行对先前呈现的按钮(在更新之前)的单击。
将更新表达式更改为选择器时,可以使它工作。我的表达式会更新需要更新的元素(
不包括 按钮)。就我而言:
<p:ajax update="@(form :input:not(button))" />
请注意,该change
事件是输入的默认事件,因此已删除event="valueChange"
。
当然,您不需要使用选择器。您也可以只更新不包含按钮的组件(如面板):
<p:ajax update="yourPanel" />
另外,ajax="true"
的默认设置p:commandButton
,因此您可以将其删除。
ajax – primefaces p:selectBooleanButton监听器未在嵌套的ui:repeat中触发
我们不能使用嵌套表单.有什么建议.
<h:form prependId="false"> <ui:repeat value="#{xBean.sectionsList}" var="sectionItem"> <p:fieldset> <p:selectBooleanButton onLabel="ON" offLabel="OFF" value="#{sectionItem.checked}"> <p:ajax listener="#{xBean.selectSection}"/> </p:selectBooleanButton> : <ui:repeat value="#{sectionItem.sectionoptionsList}" var="sectionoptionItem"> <p:selectBooleanButton onLabel="ON" offLabel="OFF" value="#{sectionoptionItem.checked}"> <p:ajax listener="#{xBean.selectSectionoption}"/> </p:selectBooleanButton> </ui:repeat> </p:fieldset> </ui:repeat> </h:form>
解决方法
换句话说,它们(p:selectBooleanButton)需要在视图构建时而不是视图渲染时准备.
JSTL< c:forEach>是一个视图构建时间标记.它将在JSF组件树中生成物理上的多个组件.
Android Material Design控件使用(2)——FloatButton TextInputEditText TextInputLayout 按钮和输入框
FloatingActionButton
1. 使用FloatingActionButton的情形
FAB代表一个App或一个页面中最主要的操作,如果一个App的每个页面都有FAB,则通常表示该App最主要的功能是通过该FAB操作的。
为了突出FAB的重要性,一个页面最好只有一个FAB 使用的时候需要导入desgin包,Android Studio 新版本都已经自动导入了,这里就不多说
compile ''com.android.support:design:25.1.0''
2. FloatingActionButton的大小一般有两种大小(官方)
- 56 * 56dp :默认的大小,最常用的尺寸。
- 40 * 40 dp :Mini版。 当然也是可以改变大小,不过一般使用
按钮中间图标大小官方推荐为 24*24dp
3.FloatingActionButton的属性
FloatingActionButton是继承ImageView
,包含了ImageView
的所有属性,除此之外,还有几个新增加的特殊属性,需要使用命名空间来使用。
引入命名空间:xmlns:app="http://schemas.android.com/apk/res-auto"
属性名 | 说明 |
---|---|
elevation | 阴影的高度 |
fabSize | FAB的大小,为normal时,大小为:56 * 56dp ,为mini时,大小为: 40 * 40 dp |
backgroundTint | FAB的背景颜色 |
rippleColor | 点击FAB时,形成的波纹颜色 |
TextInputEditText
介绍
TextInputEditText
是EditText
的子类,相当于完善了有些EditText
的缺点
当我们的界面处于全屏时,点击一个
EditText
,默认情况下不是在它下面弹出键盘,而是进入到输入法的一个全屏的输入界面(通过配置android:imeOptions=”flagNoExtractUi”可以设为直接在当前界面显示)
如果我们给
EditText
套上了一个TextInputLayout
时,TextInputLayout
会拿到EditText
的hint
显示出来并把EditText
本身的hint
设为空.这样我们在全屏的输入界面上,就显示不出来我们设置hint
,因此TextInputEditText
重写了EditText
TextInputLayout
介绍
这个布局其实是与EditText连用,可以实现密码框的显示与隐藏,和点击输入的时候,会将提示文字浮现在上方
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context="com.wan.homework.activity.Homework1Activity">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputEditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="用户名"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:inputType="textPassword"
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="密码"/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
错误提示
TextInputLayout其实内置了一个用来显示错误提示的方法,方法名为setError
,效果如下
我们可以按钮的点击事件中,对用户的输入进行判断,从而显示错误信息
val userName = input_login_name.editText?.text.toString()
//验证用户输入
if (userName.isBlank()) {
input_login_name.error = "用户名还未输入哦!"
}
PS:如果想要清空错误信息,将错误信息设置为""
即可
input_login_name.error = ""
密码的显示与隐藏
如果想要实现此效果,只需要在将TextInputLayout的EditText的inputType
属性设置为textpassword
,将TextInputLayout的自定义属性passwordToggleEnabled
设置为true
即可
<android.support.design.widget.TextInputLayout
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="密码"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
属性
属性名 | 说明 |
---|---|
app:Theme | 设置下划线或其他的颜色属性 |
android.support.design:counterEnabled | 是否显示计数器 |
android.support.design:counterMaxLength | 设置计数器的最大值,与counterEnabled同时使用 |
android.support.design:counterTextAppearance | 计数器的字体样式 |
android.support.design:counterOverflowTextAppearance | 输入字符大于我们限定个数字符时的字体样式 |
android.support.design:errorEnabled | 是否显示错误信息 |
android.support.design:errorTextAppearance | 错误信息的字体样式 |
android.support.design:hintAnimationEnabled | 是否显示hint的动画,默认true |
android.support.design:hintEnabled | 是否使用hint属性,默认true |
android.support.design:hintTextAppearance | 设置hint的文字样式(指运行动画效果之后的样式) |
android.support.design:passwordToggleDrawable | 设置密码开关Drawable图片,于passwordToggleEnabled同时使用 |
android.support.design:passwordToggleEnabled | 是否显示密码开关图片,需要EditText设置inputType |
android.support.design:passwordToggleTint | 设置密码开关图片颜色 |
android.support.design:passwordToggleTintMode | 设置密码开关图片(混合颜色模式),与passwordToggleTint同时使用 |
原文出处:https://www.cnblogs.com/stars-one/p/10348492.html
com.facebook.react.uimanager.events.ContentSizeChangeEvent的实例源码
private WebView.PictureListener getPictureListener() { if (mPictureListener == null) { mPictureListener = new WebView.PictureListener() { @Override public void onNewPicture(WebView webView,Picture picture) { dispatchEvent( webView,new ContentSizeChangeEvent( webView.getId(),webView.getWidth(),webView.getContentHeight())); } }; } return mPictureListener; }
private WebView.PictureListener getPictureListener() { if (mPictureListener == null) { mPictureListener = new WebView.PictureListener() { @Override public void onNewPicture(WebView webView,webView.getContentHeight())); } }; } return mPictureListener; }
private WebView.PictureListener getPictureListener() { if (mPictureListener == null) { mPictureListener = new WebView.PictureListener() { @Override public void onNewPicture(WebView webView,Picture picture) { dispatchEvent( webView,new ContentSizeChangeEvent( webView.getId(),webView.getContentHeight())); } }; } return mPictureListener; }
private void onTotalChildrenHeightChange(int newTotalChildrenHeight) { if (mSendContentSizeChangeEvents) { ((ReactContext) getContext()).getNativeModule(UIManagerModule.class).getEventdispatcher() .dispatchEvent(new ContentSizeChangeEvent( getId(),getWidth(),newTotalChildrenHeight)); } }
com.facebook.react.views.textinput.ReactTextInputManager的实例源码
@Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Arrays.<ViewManager>asList( new ReactDrawerLayoutManager(),new ReacthorizontalscrollviewManager(),new ReactimageManager(),new ReactProgressBarViewManager(),new ReactRawTextManager(),new ReactScrollViewManager(),new ReactSwitchManager(),new ReactTextInputManager(),new ReactTextViewManager(),new ReactToolbarManager(),new ReactViewManager(),new ReactViewPagerManager(),new ReactTextInlineImageViewManager(),new ReactVirtualTextViewManager(),new SwipeRefreshLayoutManager(),new ReactWebViewManager()); }
@Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Arrays.<ViewManager>asList( ARTRenderableViewManager.createARTGroupViewManager(),ARTRenderableViewManager.createARTShapeViewManager(),ARTRenderableViewManager.createARTTextViewManager(),new ARTSurfaceViewManager(),new ReactDialogPickerManager(),new ReactDrawerLayoutManager(),new ReactDropdownPickerManager(),new FrescoBasedReactTextInlineImageViewManager(),new ReactWebViewManager(),new RecyclerViewBackedScrollViewManager(),new SwipeRefreshLayoutManager()); }
@Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Arrays.<ViewManager>asList( ARTRenderableViewManager.createARTGroupViewManager(),new SwipeRefreshLayoutManager()); }
@Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Arrays.<ViewManager>asList( ARTRenderableViewManager.createARTGroupViewManager(),new ReactModalHostManager(),new ReactSliderManager(),new SwipeRefreshLayoutManager()); }
@Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Arrays.<ViewManager>asList( ARTRenderableViewManager.createARTGroupViewManager(),new SwipeRefreshLayoutManager()); }
@Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { List<ViewManager> viewManagers = new ArrayList<>(); viewManagers.add(ARTRenderableViewManager.createARTGroupViewManager()); viewManagers.add(ARTRenderableViewManager.createARTShapeViewManager()); viewManagers.add(ARTRenderableViewManager.createARTTextViewManager()); viewManagers.add(new ARTSurfaceViewManager()); viewManagers.add(new ReactDialogPickerManager()); viewManagers.add(new ReactDrawerLayoutManager()); viewManagers.add(new ReactDropdownPickerManager()); viewManagers.add(new ReacthorizontalscrollviewManager()); viewManagers.add(new ReactimageManager()); viewManagers.add(new ReactModalHostManager()); viewManagers.add(new ReactProgressBarViewManager()); viewManagers.add(new ReactRawTextManager()); viewManagers.add(new ReactScrollViewManager()); viewManagers.add(new ReactSliderManager()); viewManagers.add(new ReactSwitchManager()); viewManagers.add(new FrescoBasedReactTextInlineImageViewManager()); viewManagers.add(new ReactTextInputManager()); viewManagers.add(new ReactTextViewManager()); viewManagers.add(new ReactToolbarManager()); viewManagers.add(new ReactViewManager()); viewManagers.add(new ReactViewPagerManager()); viewManagers.add(new ReactVirtualTextViewManager()); viewManagers.add(new ReactWebViewManager()); viewManagers.add(new SwipeRefreshLayoutManager()); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(reactContext); if (preferences.getBoolean("flat_uiimplementation",false)) { viewManagers.addAll(Arrays.asList( new RCTViewManager(),new RCTTextManager(),new RCTRawTextManager(),new RCTVirtualTextManager(),new RCTTextInlineImageManager(),new RCtimageViewManager(),new RCTTextInputManager(),new RCTViewPagerManager(),new FlatARTSurfaceViewManager(),new RCTModalHostManager())); } return viewManagers; }
我们今天的关于PrimeFaces inputText ajax event = valueChange单击命令按钮后触发和private sub form_click()单击窗体的分享已经告一段落,感谢您的关注,如果您想了解更多关于ajax – primefaces p:selectBooleanButton监听器未在嵌套的ui:repeat中触发、Android Material Design控件使用(2)——FloatButton TextInputEditText TextInputLayout 按钮和输入框、com.facebook.react.uimanager.events.ContentSizeChangeEvent的实例源码、com.facebook.react.views.textinput.ReactTextInputManager的实例源码的相关信息,请在本站查询。
本文标签: